uva 311 Packets

题意:参考了这里的思路点击打开链接

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int arr[7];
int three[4][2] = {{0,0},{7,5},{6,3},{5,1}};

int main()
{
    while (scanf("%d%d%d%d%d%d",&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6]) != EOF)
    {
        if (arr[1]+arr[2]+arr[3]+arr[4]+arr[5]+arr[6] == 0)
            break;
        int ans = (arr[3]+3)/4+arr[4]+arr[5]+arr[6];
        arr[1] -= arr[5]*11;

        int left_for_2 = three[arr[3]%4][1] + arr[4]*5;
        if (arr[2] <= left_for_2)
        {
            arr[1] -= three[arr[3]%4][0];
            arr[2] -= left_for_2;
            arr[1] += arr[2] * 4;
            if (arr[1] > 0)
                ans += (arr[1]+35) / 36;
        }
        else 
        {
            arr[1] -= three[arr[3]%4][0];
            arr[2] -= left_for_2;
            ans += (arr[2]+8) / 9;
            arr[1] -= (9-arr[2]%9) * 4;
            if (arr[1] > 0)
                ans += (arr[1]+35) / 36;
        }
        printf("%d\n",ans);
    }
    return 0;
}



你可能感兴趣的:(uva 311 Packets)