Cod sursa(job #111270)

Utilizator mithyPopovici Adrian mithy Data 28 noiembrie 2007 23:15:29
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define NMax 1001
#define GMax 15000
#define INF 1000000

long n, max, cmin[GMax], ener[NMax], cost[NMax];

int main()
{
	long i, j, min;

	FILE *f, *g;
	f = fopen( "energii.in", "rt" );
	g = fopen( "energii.out", "wt" );

	fscanf( f, "%ld %ld", &n, &max );
	for (i=0; i<n; i++)
		fscanf( f, "%ld %ld", &ener[i], &cost[i] );

	for (i=0; i<GMax; i++)
		cmin[i] = INF;

	cmin[0] = 0;

	for (i=0; i<n; i++)
		for (j=GMax-1; j>=0; j--)
			if ( j + ener[i] < GMax && cmin[ j + ener[i] ] > cost[i] + cmin[j] )
				cmin[ j + cost[i] ] = cost[i] + cmin[j];
	
	min = INF;

	for (i=max; i<GMax; i++)
		if ( cmin[i] < min )
			min = cmin[i];

	if ( min == INF )
		fprintf( g, "-1" );
	else fprintf( g, "%ld", min );
	return 0;
}