UVA 11292 勇者鬥惡龍
阿新 • • 發佈:2018-12-16
水題一個,兩個排序解決問題
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int n,m,sum; int head[20005]={0}; int loo[20005]={0}; while (~scanf ("%d %d",&n,&m)&&n&&m) { sum=0; memset (head,0,sizeof(head)); memset (loo,0,sizeof (loo)); for (int i=0;i<n;i++) scanf ("%d",&head[i]); for (int i=0;i<m;i++) scanf ("%d",&loo[i]); sort (loo,loo+m); sort (head,head+n); int i=0,j=0; bool flag=true; if (m<n)//騎士的數量少於惡龍頭的數量,一定無解 flag=false; while (i<n&&flag) {//為惡龍的每一個頭找一個花費最小的騎士 while (j<m&&loo[j]<head[i]) j++; if (m-j<n-i) { flag=false; break; } if (loo[j]>=head[i]) { sum+=loo[j]; i++,j++; } } if (flag) printf ("%d\n",sum); else printf ("Loowater is doomed!\n"); } return 0; }