Cod sursa(job #1538384)

Utilizator catalin9898Bajenaru Catalin catalin9898 Data 28 noiembrie 2015 22:21:11
Problema Ghiozdan Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

using namespace std;

int v[201];
char s[75001],t[75001];

int main()
{
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    int n,gmax,m=0,i,j,x,nr=0;
    scanf("%d%d",&n,&gmax);
    for(i=0; i<n; i++)
    {
        scanf("%d",&x);
        v[x]++;
    }
    s[0]=1;
    t[0]=0;
    for(i=7; i>=1; i--)
    {
        if(v[i]==0) continue;
        while(v[i]&&(m+i<=gmax))
        {
            for(j=m; j>=0; j--)
            {
                if(s[j]==1&&s[j+i]==0&&j+i<=gmax)
                {
                    s[i+j]=1;
                    t[i+j]=i;
                    if(m<i+j) {m=i+j;nr++;}
                }
            }
            v[i]--;
        }
    }

    printf("%d %d\n",m,nr);


    while(t[m])
    {
        printf("%d\n",t[m]);
        m=m-t[m];
    }
    return 0;
}