Pagini recente » Cod sursa (job #2822757) | Cod sursa (job #1183888) | Cod sursa (job #761585) | Cod sursa (job #2857330) | Cod sursa (job #1093300)
#include<cstdio>
#include<cstring>
int n,w,e[10500],c[10500],x[10500],y[10500],se,sc,i,j,emin,cmin;
FILE *f,*g;
int minim(int a,int b){
if(a>b)
return b;
return a;
}
int main(){
f=fopen("energii.in","r");
g=fopen("energii.out","w");
fscanf(f,"%d%d",&n,&w);
for(i=1;i<=n;i++){
fscanf(f,"%d%d",&e[i],&c[i]);
se+=e[i];
sc+=c[i];
}
if(se<w)
fprintf(g,"-1");
else if(se==w)
fprintf(g,"%d",sc);
else{
if(se>10000)
se=10000;
for(i=0;i<=se;i++){
y[i]=sc;
}
y[e[1]]=c[1];
for(i=1;i<=n;i++){
memcpy(x,y,sizeof(y));
for(j=0;j<=se;j++){
if(j>e[i])
y[j]=minim(x[j],x[j-e[i]]+c[i]);
else if(j==e[i])
y[j]=minim(x[j],c[i]);
else
y[j]=x[j];
}
}
emin=sc;
for(i=w;i<=se;i++){
if(y[i]<emin)
emin=y[i];
}
fprintf(g,"%d",emin);
}
fclose(f);
fclose(g);
return 0;
}