Cod sursa(job #1077000)

Utilizator vyrtusRadu Criuleni vyrtus Data 10 ianuarie 2014 19:57:21
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");

int n,gr;
int a[201],c[75001],s[75001];

int main()
{
   f >> n >> gr;
    for (int i=1; i<=n;i++)
    {
       int x;
        f >> x;
         a[x]++;
    }

c[0]=1;
for (int i=200; i>0;i--)
{
    if (a[i])
    {
        for (int j=gr-i;j>=0;j--)
        {
            if (c[j])
        {
            for (int k=1; k<=a[i] && j+i*k<=gr && !c[j+i*k]; k++)
            {
                c[j+i*k] = c[j] + k;
                s[j+i*k] = i;
            }
        }
        }
    }
}

 int i;

 for (i=gr;!s[i];i--);
    g << i << " " << c[i]-1 << "\n";
 for(;i != 0; i-=s[i]) g << s[i] << "\n";

    return 0;
}