题意:给出n个数和m个数,问如何从m个数中选出n个数使得每个数都大于n里面的一个数,求选出的n个数的最小和。
将n个数和m个数排个序,从头开始找,如果大于就加进来。算法正确性显然。
int main()
{
while(scanf("%d%d",&n,&m)==2 && (n || m))
{
int cur=0,ans=0;
memset(a,0,sizeof(a));memset(b,0,sizeof(b));
for (int i=0;i<n;i++) scanf("%d",&a[i]);
for (int i=0;i<m;i++) scanf("%d",&b[i]);
sort(a,a+n);sort(b,b+m);
for (int i=0;i<m && cur<n;i++)
{
if (a[cur]<=b[i]) ans+=b[i],cur++;
if (cur>=n) break;
}
if (cur>=n) printf("%d\n",ans);
else puts("Loowater is doomed!");
}
return 0;
}