Cod sursa(job #1262699)

Utilizator cociorbaandreiAndrei Cociorba cociorbaandrei Data 13 noiembrie 2014 14:44:12
Problema Energii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#define max(a,b) (a > b ? a : b)
#define min(a,b) (a < b ? a : b)
#define INF 0x3f3f3f3f
int eg[100000], cgen[100000], a[10000], valoare[100000];
int main(int argc, char **argv)
{
	int i, j, n, W;
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);

	scanf("%d %d", &n, &W);
	
	for(i = 1;i <= W;i++)
		a[i] = INF;
	for(i = 1;i <= n;i++){
		scanf("%d %d", eg + i, cgen + i);
	}
	for(i = 1; i <= n;++i){
		for(j = 1; j <= W;++j){
			if(eg[i] >= j){
				valoare[j] = min(a[j], cgen[i]);
			}else valoare[j] = min(a[j],a[j - eg[i]] + cgen[i]);
		}
		for(j = 1; j <= W;++j)
            a[j] = valoare[j];
	}
	
	
	
	printf("%d", valoare[W] != INF ? valoare[W] : -1);
	return 0;
}