Cod sursa(job #1020944)

Utilizator robertstrecheStreche Robert robertstreche Data 2 noiembrie 2013 21:37:58
Problema Ghiozdan Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
long long a[250000],app[250000],c[250000],n,p,j,k,nr,i,x;
int main()
{
    f>>n>>k;
     for (i=1;i<=k;i++)
      a[i]=200000;
    for (i=1;i<=n;i++)
     {
         f>>x;
         app[x]++;
         for (j=k-x;j>=0;j--)
          if (a[j]+1<a[j+x])
            a[j+x]=a[j]+1;
     }
     for (i=k;i>=1;i--)
      if (a[i]!=200000)
       {
           p=i;
           break;
       }
       g<<p<<" "<<a[p]<<'\n';
       for (i=200;i>=1;i--)
        while (p && app[i] && a[p-i]!=200000)
        {
            app[i]--;
            c[++nr]=i;
            p-=i;
        }

         for (i=1;i<=nr;i++)
          g<<c[i]<<'\n';
    f.close();
    g.close();
}