Cod sursa(job #2273153)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 31 octombrie 2018 09:30:19
Problema Ghiozdan Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<fstream>
using namespace std;
fstream fin,fout;
int n,gmax, a[75005],b[75005],g[202],i,j,pmax,x,xmax,k;
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++){
		a[i]=infinit;
	}
	a[0]=0; pmax=0;
	for(i=xmax;i>=1;i--){
		for(k=1;k<=g[i];k++){
            for(j=gmax-i;j>=0;j--){
                if(a[j]<infinit && a[j+i]>a[j]+1){
                    a[j+i]=a[j]+1; b[j+i]=j;
                    if(j+i>pmax){
                        pmax=j+i;
                    }
                }
            }
		}
	}
	fout<<pmax<<" "<<a[pmax]<<"\n";
	for(i=pmax;i!=0;i=b[i]){
        fout<<i-b[i]<<"\n";
	}
	fout.close();
	fin.close();
	return 0;
}