这是一道训练思维的水题,先把所有的智者和恶龙sort一下,从智者开始循环,如果最小的智者可以砍掉当前最弱的恶龙,恶龙就++ 花费的金额就加这个智者所花的钱
如果到最后恶龙全被砍死就是可以满足输出的情况,以下是代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn = 20000 + 10;
int n, m;
int x[maxn],y[maxn];
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0)break;
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
for(int i =0 ; i< n; i++)
scanf("%d",&x[i]);
for(int i =0 ; i < m; i++)
scanf("%d",&y[i]);
int len1 = 0,len2 = 0;
sort(x,x+n);sort(y,y+m);
for(int i = 0 ; i < m ; i++)
{
if(y[i]>=x[len1])
len1++,len2 += y[i];
if(len1>=n)break;
}
if(len1>=n)
{
printf("%d\n",len2);
}
else
{
printf("Loowater is doomed!\n");
}
}
return 0;
}