Cod sursa(job #605555)

Utilizator sory1806Sandu Sorina-Gabriela sory1806 Data 31 iulie 2011 15:03:14
Problema Energii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

#define nmax 1002
#define mmax 5002
#define inf 20000000

int min (int, int);

int main () {

	freopen ("energii.in", "r", stdin);
	freopen ("energii.out", "w", stdout);

	int mat[nmax][mmax], g, w, i, j, en, c;

	scanf ("%d%d", &g, &w);
	
	for (i = 1; i <= w; i++)
		mat[0][i] = inf;

	for (i = 1; i <= g; i++) {
		scanf ("%d%d", &en, &c);

		for (j = 1; j <= w; j++)
			if (j <= en)
				mat[i][j] = min (mat[i-1][j], c);
			else
				mat[i][j] = min (mat[i-1][j], mat[i-1][j-en] + c);
	
	}

	if (mat[g][w] == inf)
		printf ("-1\n");
	else
		printf ("%d\n", mat[g][w]);

	return 0;
}

int min (int a, int b) {
	if (a < b) 
		return a;
	return b;
}