Cod sursa(job #2273820)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 31 octombrie 2018 23:17:12
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 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=pmax;j>=0;j--){

                l=j;

                for(k=1;k<=g[i] && l+i<=gmax && a[l+i]>a[l]+1;k++){

                    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;

}