http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2267
将骑士和龙头都按升序排序,按顺序如果骑士值大于所有龙头则可以继续,如果可以杀掉所有龙头则输出骑士和否则不行。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[20005] ,b[20005]; int main() { // freopen("1.txt","r",stdin); int n,m,ans,flag; while(scanf("%d %d",&n,&m)==2 &&n&&m) { ans=0; for(int i=0; i<n; i++) cin>>a[i]; for(int i=0; i<m; i++) cin>>b[i]; sort(a,a+n); sort(b,b+m); int j=0; for(int i=0; i<m; i++) { if(a[j]<=b[i]) { ans+=b[i]; if(++j==n) break; } } if(j<n) cout<<"Loowater is doomed!"<<endl; else cout<<ans<<endl; } return 0; }
时间: 2024-12-02 11:58:36