Cod sursa(job #2601937)

Utilizator alex_benescuAlex Ben alex_benescu Data 15 aprilie 2020 15:36:56
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>
#include <fstream>
using namespace std;
int c[201], s[75000], t[75000], n, ss, g, i, j, k, mx, x;
int main (){
	ifstream f("ghiozdan.in");
	freopen("ghiozdan.out","w",stdout);
	f>>n>>g;
	for(i=1;i<=n;++i){
		f>>x;
		++c[x];
		if(x>mx)
			mx=x;}
	s[0]=1;
	ss=0;
	for(i=mx;i;--i)
		if(c[i])
			for(j=g-i;j>=0;--j)
				if(s[j])
					for(k=1;k<=c[i]&&j+k*i<=g&&!s[j+k*i];++k){
						s[j+i*k]=s[j+(k-1)*i]+1;
						t[j+k*i]=i;
						if(j+k*i>ss)
							ss=j+k*i;
          }
	s[ss]--;
	printf("%d %d\n",ss,s[ss]);
	for(i=ss;i;i-=t[i])
		printf("%d\n",t[i]);
	return 0;
}