Cod sursa(job #681231)

Utilizator lucian666Vasilut Lucian lucian666 Data 16 februarie 2012 19:43:37
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
using namespace std;
ofstream out("energii.out");
int n,emax,q[1001],c[1001],cmax[5001],uz[5001][1001];
void citire();
void dinamic();
int main()
{
	citire();
	dinamic();
	if(cmax[emax]==-1)
		out<<-1;
	else
		out<<cmax[emax];
	return 0;
}
void citire()
{
	ifstream in("energii.in");
	in>>n;
	in>>emax;
	int i;
	for(i=1;i<=n;i++)
		in>>q[i]>>c[i];
}
void dinamic()
{
	int i,k,etl;
	for(etl=1;etl<=emax;etl++)
		cmax[etl]=-1;
	for(etl=1;etl<=emax;etl++)
		for(i=1;i<=n;i++)
			if(q[i]<=etl&&!uz[etl-q[i]][i]&&cmax[etl-q[i]]!=-1)
				if(cmax[etl]<c[i]+cmax[etl-q[i]])
				{
					cmax[etl]=c[i]+cmax[etl-q[i]];
					for(k=1;k<=n;k++)
						uz[etl][k]=uz[etl-q[i]][k];
					uz[etl][i]=1;
				}
}