Pagini recente » Cod sursa (job #191414) | Cod sursa (job #2240376) | Cod sursa (job #2583516) | Cod sursa (job #2272452) | Cod sursa (job #88431)
Cod sursa(job #88431)
#include<stdio.h>
struct gen{
int e,c;
};
gen nr[1001];
int w,cost[5010],cmin;
void dinamic(int j){
int i;
if(nr[j].e>=w){
if(cmin==0)
cmin=nr[j].c+1;
else
if(nr[j].c<cmin)
cmin=nr[j].e;
}
else{
for(i=w-1;i>=0;--i){
if(cost[i]){
if(i+nr[j].e>=w && nr[j].c+cost[i]<cmin)
cmin=nr[j].c+cost[i];
if(nr[j].e+i<w){
if(nr[j].c+cost[i]<cost[i+nr[j].e])
cost[nr[j].e+i]=cost[i]+nr[j].c;
else
if(cost[i+nr[j].e]==0)
cost[nr[j].e+i]=cost[i]+nr[j].c;
}
}
}
}
}
int main(){
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int g,i;
scanf("%d%d",&g,&w);
for(i=0;i<g;++i)
scanf("%d%d",&nr[i].e,&nr[i].c);
cost[0]=1;
for(i=0;i<g;i++)
dinamic(i);
printf("%d\n",cmin-1);
return 0;
}