Cod sursa(job #2273824)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 31 octombrie 2018 23:32:19
Problema Ghiozdan Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>

using namespace std;

fstream fin,fout;

int n,gmax, best[75005],prec[75005],g[202],i,j,pmax,x,xmax,k,l;

int infinit=30000;

int main(){

	fin.open("ghiozdan.in",ios::in);

	fout.open("ghiozdan.out",ios::out);

	fin>>n>>gmax;

	for(i=1;i<=n;i++){

        fin>>x; xmax=max(xmax,x);

        g[x]++;

	}

	for(i=1;i<=gmax;i++){

		best[i]=infinit;

	}

	best[0]=0; pmax=0;

    for(i=xmax;i>=1;i--){

        for(j=1;j<=g[i];j++){

            for(k=gmax;k>=i;k--){

                if(best[k-i]+1<best[k]){
                    best[k]=best[k-i]+1;
                    prec[k]=k-i;
                }
            }
        }
    }
    for(i=gmax;i>=0;i--){
        if(best[i]<infinit){
            pmax=i;
            break;
        }
    }
	fout<<pmax<<" "<<best[pmax]<<"\n";

	for(i=pmax;i!=0;i=prec[i]){

        fout<<i-prec[i]<<"\n";

	}

	fout.close();

	fin.close();

	return 0;

}