Cod sursa(job #766869)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 12 iulie 2012 13:00:58
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 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 <= n; i++)
	{
		fscanf(f, "%d %d", &e, &c);
		for(j = x; j >= 0; j--)
			if(a[j] || !j)
			{
				if(j + e <= x)
				{
					if(!a[ e + j] || c + a[j] < a[ e + j ])
						a[ e + j ] = c + a[j];
				}
				else if(!a[x] || c + a[j] < a[x])
					a[x] = c + a[j];
			}
	}
		
	fclose(f);
				
	if(!a[x])
		a[x] = -1;
}

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

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