Pagini recente » Cod sursa (job #2562161) | Cod sursa (job #1405851) | Cod sursa (job #2519725) | Cod sursa (job #926411) | Cod sursa (job #751907)
Cod sursa(job #751907)
#include <cstdio>
struct gen{
int e, c;
};
int min (int a,int b){
if(a<b)return a;
return b;
}
gen a[1005];
int w, n,ok[1000005],sp[1000005];
int main () {
int i,s=0,j,maxim=-1,va=99999999;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d %d",&n,&w);
for(i=1;i<=1000005;++i)sp[i]=99999999;
for(i=1;i<=n;++i){
scanf("%d %d",&a[i].e,&a[i].c);
s+=a[i].e;
//if(maxim<a[i].e)maxim=a[i].e;
}
if(s<w){
printf("-1");
return 0;
}
ok[0]=1;
for(i=1;i<=n;++i){ //generatoarele
for(j=w;j>=0;--j)if(ok[j]){ //energia cumualata
ok[j+a[i].e]=1;
if(sp[j+a[i].e]!=0)sp[j+a[i].e]=min(sp[a[i].e+j],sp[j]+a[i].c);
else sp[j+a[i].e]=sp[j]+a[i].c;
if(j+a[i].e>=w)va=min(va,sp[j+a[i].e]);
}
}
/*va=sp[w];
for(i=w;i<=w+maxim;++i)if(va>sp[i]&&sp[i]!=0)va=sp[i];*/
printf("%d",va);
return 0;
}