Cod sursa(job #885090)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 21 februarie 2013 17:20:19
Problema Ghiozdan Scor 44
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");

int v[20001],w[75001][2],s[20001];
int n,G,i,j,h,k;

int main()
{
    fin>>n>>G;
    for (i=1;i<=n;i++)
    {
        fin>>v[i];
        for (j=G;j>v[i];j--)
        {if (w[j-v[i]][0]) if (w[j-v[i]][0]+1<w[j][0]||w[j][0]==0)
        {
            w[j][0]=w[j-v[i]][0]+1;
            w[j][1]=v[i];
            if (j>=s[0])
            {
                s[0]=j;
                s[1]=w[j][0];
                h=j;
                for (k=2;w[h][1]!=0;h=h-w[h][1]) s[k++]=w[h][1];
            }
        }
        }
        j=v[i];
        if (w[j][0]==0||1<w[j][0])
        {
            w[j][0]=1;
            w[j][1]=0;
            if (j>=s[0])
            {
                s[0]=v[i];
                s[1]=1;
                s[2]=v[i];
            }
        }
    }
    fout<<s[0]<<" "<<s[1]<<"\n";
    for (k=2;k<=s[1]+1;k++) fout<<s[k]<<"\n";
}