Cod sursa(job #2190377)

Utilizator Alexandru_StoianStoian Sorin Alexandru Alexandru_Stoian Data 30 martie 2018 17:17:55
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <algorithm>

#define NMAX 75007

using namespace std;

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

int ap[75007], a[75007], b[75007];
int G, n, x;

int main (){
    f>>n>>G;
    for(int i = 1; i <= n; ++i){
        f>>x;
        ap[x]++;
    }
    a[0] = 1;
    int Max = 0;
    for(int i=200; i>=1; i--)
        if(ap[i])
            for(int j=G-i; j>=0 ;j--)
                if(a[j])
                    for(int k=1; k<=ap[i] && j+k*i<= G && !a[j+k*i]; ++k){
                        a[j+k*i]=a[j]+k;
                        b[j+k*i]=i;
                        Max=max(Max,j+k*i);
                    }
    g<<Max<<" "<<a[Max]-1<<"\n";
    for(int i=Max; i>0 ;i=i-b[i])
        g<<b[i]<<"\n";
    return 0;
}