Cod sursa(job #885143)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 21 februarie 2013 17:47:22
Problema Ghiozdan Scor 54
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 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];
        }
        }
        j=v[i];
        if (w[j][0]==0||1<w[j][0])
        {
            w[j][0]=1;
            w[j][1]=0;
        }
    }
    fin>>v[n];
    for (j=G;j>v[n];j--)
        if (w[j-v[n]][0]) if (w[j-v[n]][0]+1<w[j][0]||w[j][0]==0)
        {
            w[j][0]=w[j-v[n]][0]+1;
            w[j][1]=v[n];
            break;
        }
    for (j=G;;j--)
    {
        if (w[j][0]) break;
    }
    fout<<j<<" "<<w[j][0]<<"\n";
    while (w[j][1]!=0)
    {
        fout<<w[j][1]<<"\n";
        j=j-w[j][1];
    }
    fout<<j;
}