你作为一个村的村长,保卫村庄是理所当然的了。今天,村庄里来了一只恶龙,他有 n 个头,恶龙到处杀人放火。你着急了。不过天无绝人之路,现在来了一个骑士团。里面有 m 位成员(往下看)。
每个人都可以砍掉至多一个大小不超过 zi 的头,需要 zi 个金币,求最小花费。
第一行两个整数 n,m。
下接 n 行,一个整数表示 n 个头的大小。
下接 m 行,每个人可以砍的头大小和需要的金币数 z1,⋯,zm。
一个整数,最小花费。如果无解,输出 you died!。
2 3
5
4
7
8
4
11
对于所有数据,1≤n,m≤3×104,1≤zi≤105。
#include<bits/stdc++.h>
using namespace std;
int n,m,n1[20005],z[20005];
int main(){
cin>>n>>m;
int sum=0,q=0,p=1;
for(int i=1;i<=n;i++)
cin>>n1[i];
for(int i=1;i<=m;i++)
cin>>z[i];
if(n>m) cout<<"you died!";
sort(z+1,z+m+1);
sort(n1+1,n1+n+1);
for(int j=1;j<=m;j++){
if(z[j]>=n1[p]){
sum=sum+z[j];
p++;
}
if(p==n+1){
q=1;
break;
}
}
if(q==1)cout<<sum<<endl;
else puts("you died!");
return 0;
}