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