Cod sursa(job #766861)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 12 iulie 2012 12:53:33
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>

#define NMAX 1005
#define EMAX 10005

int v[ NMAX ][2], a[ EMAX ],  n, x;

void read()
{
	int i;
	FILE *f = fopen("energii.in", "r");
	fscanf(f, "%d %d", &n, &x);
	for(i = 1; i <= n; i++)
		fscanf(f, "%d %d", &v[i][0], &v[i][1]);
	fclose(f);
}

void solve()
{
	int i, j;
	
	for(i = 1 ; i <= n; i++)
	{
		for(j = x; j >= 0; j--)
			if(a[j] || !j)
			{
				if(j + v[i][0] <= x)
				{
					if(!a[ v[i][0] + j] || v[i][1] + a[j] < a[ v[i][0] + j ])
						a[ v[i][0] + j ] = v[i][1] + a[j];
				}
				else if(!a[x] || v[i][1] + a[j] < a[x])
					a[x] = v[i][1] + a[j];
			}
	}
				
	if(!a[x])
		a[x] = -1;
}

void write()
{
	FILE *g = fopen("energii.out", "w");
	fprintf(g, "%d\n", a[x]);
	fclose(g);
}

int main()
{
	read();
	solve();
	write();
	return 0;
}