#include <stdio.h>
#include <algorithm>
#define MAX_NUM 21000
int a[MAX_NUM]; //dragon
int b[MAX_NUM]; //warrior
int cmp(const void* a, const void *b)
{
return *((int*)a) - *((int*)b);
}
void func(int m, int n)
{
if(n < m)
{
printf("Loowater is doomed!\n");
return;
}
int i, j;
int cost;
qsort(a, m, sizeof(int), cmp);
qsort(b, n, sizeof(int), cmp);
i = 0;
cost = 0;
for(j=0; j<n; j++)
{
if(i == m)
break;
if(b[j] >= a[i])
{
i++;
cost += b[j];
}
}
if(i == m)
printf("%d\n", cost);
else
printf("Loowater is doomed!\n");
}
int main(void)
{
int m, n;
int i;
while(1)
{
scanf("%d %d", &m, &n);
if(!m && !n)
break;
for(i=0; i<m; i++)
scanf("%d", a+i);
for(i=0; i<n; i++)
scanf("%d", b+i);
func(m, n);
}
return 0;
}
这道题用贪心算法,贪心的策略是对于每一个龙头,选择代价最小的骑士来砍掉龙头,最后的代价就是最小的。