Cod sursa(job #1140452)

Utilizator enedumitruene dumitru enedumitru Data 11 martie 2014 23:55:05
Problema Ghiozdan Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;
ifstream in("ghiozdan.in"); ofstream out("ghiozdan.out");
int N,i,j,umax,u,lv,ln,G,a[20001],x[75002],t[75002];
int main()
{	in>>N>>G;
	ln=1; x[0]=1; umax=0;
	for(i=1; i<=N; i++)
	{	in>>a[i];
		for(j=umax;j>=0;j--)
			if(x[j])
			{	u=j+a[i];
				if(u<=G) 
				{	if(x[u]==0) 
					{	x[u]=x[j]+1, t[u]=i;
						if(umax<u) umax=u;
					}
					
					/*
					if(umax<u) umax=u, x[u]=x[j]+1, t[u]=i;
						else if(umax==u) {if(x[u]>x[j]+1) x[u]=x[j]+1, t[u]=i;}
								else {if(x[u]>x[j]+1) x[u]=x[j]+1, t[u]=i;}
					*/
				}		
			}
	}
	out<<umax<<' '<<x[umax]-1<<'\n';
	while(umax)
	{	out<<a[t[umax]]<<'\n';
		umax-=a[t[umax]];
	}
	out.close(); return 0;
}