背景:
最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。
输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来n行,每行包含一个整数,表示龙头的直径,接下来 m 行,每行包含一个整数,表示勇士的身高
输出:
如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “bit is doomed! ”
1 #include <stdio.h> 2 3 int main() 4 { 5 int i,j,t; 6 int dragon[105],dragon_f[105]; 7 int warrior[105],warrior_f[105]; 8 int dragon_n,warrior_n; 9 10 scanf("%d %d",&dragon_n,&warrior_n); 11 for (i=0; i<dragon_n; i++){ 12 scanf("%d",&dragon[i]); 13 } 14 for (i=0; i<warrior_n; i++){ 15 scanf("%d",&warrior[i]); 16 } 17 for (i=0; i<105; i++){ 18 dragon_f[i] = warrior_f[i] = 0; 19 } 20 // sort 21 for (i=0; i<dragon_n-1; i++){ 22 for (j=0; j<dragon_n-i-1; j++){ 23 if (dragon[j] > dragon[j+1]){ 24 t = dragon[j+1]; 25 dragon[j+1] = dragon[j]; 26 dragon[j] = t; 27 } 28 } 29 } 30 for (i=0; i<warrior_n-1; i++){ 31 for (j=0; j<warrior_n-i-1; j++){ 32 if (warrior[j] > warrior[j+1]){ 33 t = warrior[j+1]; 34 warrior[j+1] = warrior[j]; 35 warrior[j] = t; 36 } 37 } 38 } 39 40 for (i=0; i<dragon_n; i++){ 41 for (j=0; j<warrior_n; j++){ 42 if (dragon[i] <= warrior[j] && dragon_f[i] == 0 && warrior_f[j] == 0){ 43 dragon_f[i] = 1; 44 warrior_f[j] = 1; 45 } 46 } 47 } 48 for (i=0; i<dragon_n; i++){ 49 if (dragon_f[i] == 0){ 50 printf("bit is doomed!\n"); 51 return 0; 52 } 53 } 54 int sum = 0; 55 for (i=0; i<warrior_n; i++){ 56 if (warrior_f[i] == 1){ 57 sum = sum + warrior[i]; 58 } 59 } 60 printf("%d\n",sum); 61 return 0; 62 }