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 }

//纯数组模拟,先装最大的!

你可能感兴趣的:(poj)