Cod sursa(job #18376)

Utilizator corina_vornicescuCorina Vornicescu corina_vornicescu Data 18 februarie 2007 11:48:39
Problema Ghiozdan Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.68 kb
#include<fstream.h>
long N,A[75100],P[75100],nr[210];
int GR,G[20100];
long i,j;

int main()
{
ifstream f("ghiozdan.in");
ofstream gout("ghiozdan.out");

f>>N;
f>>GR;

for(i=1;i<=N;i++)
	{
	f>>G[i];
	nr[G[i]]++;
	}
f.close();



A[0]=0;
for (i=1;i<=200;i++)
	A[i]=-1;

for(i=201;i>0;i--)
	if(nr[i]>0)
		{
		for(j=750;j>=0;j--)
			if(A[j]!=-1)
				if ((A[j]+1<A[j+i] && A[j+i]!=-1) || (A[j+i]==-1))
					{
					A[j+i]=A[j]+1;
					P[j+i]=i;
					}
		nr[i]--;
		if(nr[i]==0)
			nr[i]=-1;
		i++;
		}

for(i=GR;i>=0;i--)
	if(A[i]!=-1)
		{
		gout<<i<<" "<<A[i]<<"\n";
		break;
		}

for(;i>0;i=i-P[i])
	gout<<P[i]<<" ";

gout.close();
return 0;
}