Cod sursa(job #2273460)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 31 octombrie 2018 16:53:07
Problema Ghiozdan Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
using namespace std;
fstream fin,fout;
int n,gmax, a[75005],b[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++){
		a[i]=infinit;
	}
	a[0]=0; pmax=0;
	for(i=xmax;i>=1;i--){
        if(g[i]>0){
            for(j=gmax-i;j>=0;j--){
                if(a[j]<infinit){
                    l=j;
                    for(k=1;k<=g[i] && l+i<=gmax;k++){
                        if(a[l+i]>a[l]+1){
                            a[l+i]=a[l]+1; b[l+i]=l;
                        }
                        if(l+i>pmax){
                            pmax=l+i;
                        }
                        l=l+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;
}