思路:先将龙和士兵进行分别排序从小到大。然后,每次找当前最小龙的第一个大于它的骑手之后退出,开始下一个龙,重复上一次操作。
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2e4+10;
int a[maxn], b[maxn];
int n, m;
int main(){
while(cin>>n>>m){
if(n+m==0)break;
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=1;i<=m;++i)cin>>b[i];
sort(a+1, a+n+1);
sort(b+1, b+1+m);
int ans=0;
bool flag1=1;
for(int i=1, j=1;i<=n;++i, ++j){
bool flag2=1;
for(; j<=m;++j){
if(a[i]<=b[j]){ans+=b[j];flag2=0; break;}
}
if(flag2){flag1=0; break;}
}
if(flag1)cout<<ans<<endl;
else cout<<"Loowater is doomed!"<<endl;
}
}
转载于:https://www.cnblogs.com/ALINGMAOMAO/p/10712816.html