Cod sursa(job #2273451)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 31 octombrie 2018 16:33:46
Problema Ghiozdan Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 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--){
        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;
}