Cod sursa(job #668391)

Utilizator federerUAIC-Padurariu-Cristian federer Data 24 ianuarie 2012 20:52:35
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
#define Nmax 5001
#define Gmax 10001
using namespace std;

int Cmax[Gmax], uz[Gmax][Nmax], c[Nmax], g[Nmax];
int i, j, G, n, k;

int main()
{
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);
	
	scanf("%d%d%", &n, &G);
	for(i=1;i<=n;i++)
		scanf("%d%d", &g[i], &c[i]);
	for(i=1;i<=G;i++)
		Cmax[i]=-1;

	for(i=1;i<=G;i++)
		for(j=1;j<=n;j++)
			if(g[j]<=i && Cmax[i-g[j]]!=-1 && !uz[i-g[j]][j])
				if(Cmax[i]<c[j]+Cmax[i-g[j]])
				{
					Cmax[i]=c[j]+Cmax[i-g[j]];
					for(k=1;k<=n;k++)
						uz[i][k]=uz[i-g[j]][k];
					uz[i][j]=1;
				}
	printf("%d\n", Cmax[G]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}