蓝书P1,
很简单的一个贪心选择,用能力小的去砍小的。本来想双重循环,哎,傻逼了,直接遍历选手,碰到能砍的就砍掉。
#include <stdio.h> #include <algorithm> using namespace std; #define MAXN 20005 int n,m; int nn[MAXN],mm[MAXN]; int main() { freopen("input.txt","r",stdin); while(scanf("%d%d",&n,&m),n+m) { for(int i=0; i<n; i++) scanf("%d",&nn[i]); for(int i=0; i<m; i++) scanf("%d",&mm[i]); sort(nn,nn+n); sort(mm,mm+m); int ans = 0; int i=0,j=0; for(i=0; i<m; i++) { if(mm[i]>=nn[j]) { ans+=mm[i]; if(++j==n) break; } } if(j<n) printf("Loowater is doomed! "); else printf("%d ",ans); } return 0; }