Cod sursa(job #3246049)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 1 octombrie 2024 17:39:01
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;

ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");

int frv[201];
int dp[75005];
int laste[75005];

int main()
{
    int n,g,i,j,k,a;
    cin>>n>>g;
    for(i=1;i<=n;i++){
        cin>>a;
        frv[a]++;
    }
    dp[0]=1;
	for(i=200;i>=1;i--){
		if(frv[i]){
			for(j=g-i;j>=0;j--){
				if(dp[j]){
					for(k=1;k<=frv[i] && j+k*i<=g && !dp[j+k*i];k++){
                        dp[j+k*i]=dp[j]+k;
                        laste[j+k*i]=i;
					}
                }
            }
        }
    }
    i=g;
    while(dp[i]==0) i--;
	cout<<i<<" "<<dp[i]-1<<"\n";
	while(i){
        cout<<laste[i]<<"\n";
        i-=laste[i];
	}

    return 0;
}