Cod sursa(job #766877)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 12 iulie 2012 13:08:23
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>

#define EMAX 10005

int a[ EMAX ],  n, x;

void solve()
{
	int i, j, e, c;
	
	FILE *f = fopen("energii.in", "r");
	fscanf(f, "%d %d", &n, &x);
	
	for(i = 1; i < EMAX; i++)
		a[i] = -1;
	
	for(i = 1 ; i <= n; i++)
	{
		fscanf(f, "%d %d", &e, &c);
		for(j = x; j >= 0; j--)
			if(a[j] != - 1)
			{
				if(j + e <= x)
				{
					if(a[ e + j] == -1 || c + a[j] < a[ e + j ])
						a[ e + j ] = c + a[j];
				}
				else if(a[x] == -1 || c + a[j] < a[x])
					a[x] = c + a[j];
			}
	}
		
	fclose(f);

}

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

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