//UVA 11292 #include<cstdio> #include<algorithm> using namespace std; const int maxiter=20001; int dra[maxiter],qi[maxiter]; int main() { int n,m; while(scanf("%d%d",&n,&m)==2&&n&&m) { for(int i=0;i<n;i++) scanf("%d",&dra[i]); for(int i=0;i<m;i++) scanf("%d",&qi[i]); sort(dra,dra+n); sort(qi,qi+m); int cur=0;//当前砍掉头的个数 int cost=0;//当前花费骑士力量数 for(int i=0;i<m;i++) { if(qi[i]>=dra[i]) { cost+=qi[i]; if(++cur==n) break; } } if(cur<n) printf("Loowater is doomed! "); else printf("%d ",cost); } return 0; }
//UVA 11729 #include<cstdio> #include<vector> #include<algorithm> using namespace std; struct Job { int j,b; bool operator <(const Job& x) const { return j>x.j; } }; int main() { int n,b,j; int kase=1; while(scanf("%d",&n)==1&&n) { vector<Job> v; for(int i=0;i<n;i++) { scanf("%d%d",&b,&j); v.push_back((Job){j,b}); } sort(v.begin(),v.end()); int ans=0,s=0; for(int i=0;i<n;i++) { s+=v[i].b; ans=max(ans,s+v[i].j); } printf("Case %d: %d ",kase++,ans); } return 0; }