第一遍读完以后感觉需要排序然后嵌套循环而且第一重龙头要倒着循环,第一次写出来程序报错,想了想其实没那么难,排序后第n位的龙头最理想也是由第n位的勇士砍掉,所以其实很简单,思维还是太僵化了。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
int n,m;
int a[20001],b[20001],c[20001];
int i,j;
int ans,count;
while(cin>>n>>m)
{
if(n==0&&m==0)
{
break;
}
ans=0;
count=0;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<m;i++)
{
cin>>b[i];
c[i]=1;
}
sort(a,a+n);
sort(b,b+m);
for(i=0;i<m;i++)/*排在i的龙头最早轮到排在i位的骑士砍*/
{
if(b[i]>=a[i])
{
ans+=b[i];
if(++count==n)
{
break;
}
}
}
if(count<n)
{
cout<<"Loowater is doomed!"<<endl;
}
else
{
cout<<ans<<endl;
}
}
return 0;
}