Pagini recente » Cod sursa (job #185252) | Cod sursa (job #2441231) | Cod sursa (job #986324) | Cod sursa (job #1054232) | Cod sursa (job #221057)
Cod sursa(job #221057)
#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());
}