http://acm.pku.edu.cn/JudgeOnline/problem?id=1017

Код:
#include <stdio.h>

int a[7];

int max(int a, int b)
{
    if (a > b) return a; else return b;
}

int min(int a, int b)
{
    if (a > b) return b; else return a;
}

int main()
{
    int i,j,k;
    int count;
    scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
    while (a[1] > 0 || a[2] > 0 || a[3] > 0 || a[4] > 0 || a[5] > 0 || a[6] > 0)
    {
        count = 0;
        for (k = 6; k >= 1; k--)
        {
            if (!a[k]) continue;
            if (k == 6)
            {
                count += a[k];
                continue;
            } else if (k == 5)
            {
                 count += a[k];
                j = min(a[k]*11,a[1]);
                a[1] -= j;
                continue;
            } else if (k == 4)
            {
                count += a[k];
                j = min(a[k]*5,a[2]);
                a[2] -= j;
                if (!a[2])
                {
                    j = a[k]*5 - j;
                    i = min(j*4,a[1]);
                    a[1] -= i;
                }
                continue;
            } else if ( k == 3)
            {
                count += a[k] / 4;
                j = a[k] % 4;
                if ( j == 1)
                {
                    i = min(5,a[2]);
                    a[2] -= i;
                    a[1] -= min(27 - 4 * i,a[1]);
                    count++;
                } else if (j == 2)
                {
                    i = min(3,a[2]);
                    a[2] -= i;
                    a[1] -= min(18 - 4 * i,a[1]);
                    count++;
                } else if (j == 3)
                {
                    i = min(1,a[2]);
                    a[2] -= i;
                    a[1] -= min(9 - 4 * i,a[1]);
                    count++;
                }
                continue;
           } else if ( k == 2)
           {
                count += a[k] / 9;
                j = a[k] % 9;
                if (j)
                {
                    a[1] -= min(36 - 4 * j,a[1]);
                    count++;
                }
                continue;
           } else
           {
                count += a[k] / 36;
                j = a[k] % 36;
                if (j) count++;
                continue;
           }
       }
       printf("%d\n",count);
       scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
    }
    return 0;
}