poj1017 Packets
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int i,t,n; 6 int a[7],f[7]; 7 while(1) 8 { 9 memset(f,0,sizeof(f)); 10 for(n=0,i=1;i<=6;++i){ 11 scanf("%d",&a[i]); 12 n+=a[i]; 13 } 14 if(!n) break; 15 for(n=0,i=6;i>0;--i){ 16 switch(i){ 17 case 6:{ 18 n+=a[i]; 19 break; 20 } 21 case 5:{ 22 n+=a[i]; 23 f[1]+=11*a[i]; 24 break; 25 } 26 case 4:{ 27 n+=a[i]; 28 f[2]+=5*a[i]; 29 break; 30 } 31 case 3:{ 32 n+=a[i]/4; 33 t=a[i]%4; 34 if(t){ 35 n++; 36 switch(t){ 37 case 1:{ 38 f[2]+=5; 39 f[1]+=7; 40 break; 41 } 42 case 2:{ 43 f[2]+=3; 44 f[1]+=6; 45 break; 46 } 47 case 3:{ 48 f[2]++; 49 f[1]+=5; 50 break; 51 } 52 } 53 } 54 break; 55 } 56 case 2:{ 57 if(a[i]-f[2]>0){ 58 n+=(a[i]-f[2])/9; 59 t=(a[i]-f[2])%9; 60 if(t) n++; 61 f[1]+=36-4*t; 62 } 63 else 64 f[1]+=(f[2]-a[i])*4; 65 break; 66 } 67 case 1:{ 68 if(a[i]-f[1]>0){ 69 n+=(a[i]-f[1])/36; 70 if((a[i]-f[1])%36) n++; 71 } 72 break; 73 } 74 } 75 } 76 printf("%d\n",n); 77 } 78 return 0; 79 }
//纯数组模拟,先装最大的!