题意:
你的王国有一条n个恶龙,有m个勇士。能力值为x的勇士只砍比x小的龙头,且需要支付x金币给勇士。问怎么样雇佣勇士金币花的最少且能杀死龙。
思路:
把龙头的直径和勇士的能力值排升序,每次用比龙头直径大且最小的数去砍,直到砍完。没砍守就无解。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m&&n&&m)
{
int a[30000];
int b[30000];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<m;i++)
cin>>b[i];
sort(a,a+n);
sort(b,b+m);
int j=0,i;
int sum=0;
for(i=0;i<m;i++)
{
if(a[j]<=b[i])
{
sum+=b[i];
j++;
}
if(j>=n)
break;
}
if(j<n)
cout<<"Loowater is doomed!"<<endl;
else
cout<<sum<<endl;
}
}