Cod sursa(job #2185203)

Utilizator TonuMihaelaTonu Mihaela TonuMihaela Data 24 martie 2018 13:49:19
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <algorithm>
#define NMAX 75007
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int b[NMAX], a[NMAX], c[NMAX];
int G, n, x;
int main(){
    fin>>n>>G;
    for(int i=1;i<=n;++i){
        fin>>x;
        b[x]++;
    }
    a[0]=1;
    int Max=0;
    for(int i=200;i>=1;i--)
        if(b[i])
            for(int j=G-i;j>=0;j--)
                if(a[j])
                    for(int k=1;k<=c[i] && j+k*i<=G && !a[j+k*i];++k){
                        a[j+k*i]=a[j]+k;
                        c[j+k*i]=i;
                        Max=max(Max,j+k*i);
                    }
    fout <<Max<<" "<<a[Max]-1<<"\n";
    for(int i=Max;i>0;i-=c[i])
        fout <<c[i]<<"\n";
    return 0;
}