Cod sursa(job #221057)

Utilizator zlatebogdanZlate Bogdan zlatebogdan Data 14 noiembrie 2008 11:38:27
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
# define INF 50000000
#define N 15005
int g,w,cost[1005],v[N],energ[1005];
void citire(){
	int i;
	scanf("%d%d",&g,&w);
	for (i=1;i<=g;++i)
		scanf("%d%d",&energ[i],&cost[i]);
}
int rezolvare(){
	int i,j,min;
	for (i=1;i<=N;++i)
		v[i]=INF;
	for (i=1;i<=g;++i){
		for (j=w-1;j>0;--j)//j=energie care se poate obtine cu generatoarele de pana acum (daca v[j]!=INF)
			if (v[j]!=INF && v[j]+cost[i]<v[j+energ[i]])//compar costul pe care-l obtin adaugand generatorul i cu costul dinainte
				v[j+energ[i]]=v[j]+cost[i];
		if (cost[i]<v[energ[i]])//incerc sa iau generatorul i singur
			v[energ[i]]=cost[i];
	}
	min=INF;
	for (i=w;i<N;++i)
		if (v[i]<min)
			min=v[i];
	if (min==INF)
		return -1;
	else
		return min;
	
}
int main(){
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	citire();
	rezolvare();
	printf("%d",rezolvare());
}