o(n+m)的复杂度 水
龙有n个头 m个骑士 能力值为x的骑士可以砍掉龙的一个半径不超过x的头 要花x的money 求最小花费砍光头 不行输出Loowater is doomed!
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[20010];
int b[20010];
int main()
{
int n,m,i,j,sum;
while(scanf("%d %d",&n,&m),n||m)
{
for(i = 0;i < n; i++)
scanf("%d",&a[i]);
for(j = 0;j < m; j++)
scanf("%d",&b[j]);
sort(a,a+n);
sort(b,b+m);
i = j = sum = 0;
while(i < n && j < m)
{
if(a[i] <= b[j])
{
sum += b[j];
i++;
j++;
}
else
j++;
}
if(i == n)
printf("%d\n",sum);
else
puts("Loowater is doomed!");
}
return 0;
}