Cod sursa(job #2031019)

Utilizator Garen456Paun Tudor Garen456 Data 2 octombrie 2017 17:06:27
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
short int a[75007];
int ct[205];
int n,g;

short int mini ( short int c,short int b )
{
    if(c>b) return b;
    else return c;
}

int main()
{  fin>>n>>g;
    int i,x,j,z,sm;
    short int l;
    for(i=1;i<=n;++i)
    { fin>>x;
        ct[x]++;
    }


        for(j=0;j<=g;++j)
           a[j]=-1;

    a[0]=0;

     for(i=200;i>=1;--i)
        if(ct[i])
        for(j=g;j>=0;--j)
            if(a[j]!=-1)
     { z=j+i; l=1; a[j]=a[j];
         while(z<=g && l<=ct[i] && a[z]==-1)
          {  if(a[z]==-1)
             a[z]=a[j]+l;
           ++l;
          z+=i;
          }
     }
     for(i=g;i>=0;--i)
        if(a[i]!=-1)
          break;

     fout<<i<<" "<<a[i]<<"\n";
     sm=i;
     while(sm)
     for(i=1;i<=sm;++i)
        if(ct[i] && a[sm-i]==a[sm]-1)
     { fout<<i<<"\n";
         sm-=i;
         break;
     }
    return 0;
}