Pagini recente » Cod sursa (job #250635) | Cod sursa (job #915863) | Cod sursa (job #279228) | Cod sursa (job #2554346) | Cod sursa (job #327927)
Cod sursa(job #327927)
#include <stdio.h>
FILE *f,*g;
long min,max=0,n,w,i,j,x,y,maxn=100001;
long d[10000001];
int main(){
f=fopen("energii.in","r");
g=fopen("energii.out","w");
fscanf(f,"%ld%ld",&n,&w);
for (i=1;i<=maxn;i++) d[i]=-1;
d[0]=0;
for (i=1;i<=n;i++){
fscanf(f,"%ld%ld",&x,&y);
for (j=max;j>=0;j--)
if (d[j]!=-1)
if (d[j+x]==-1){
d[j+x]=y+d[j];
if (j+x>max) max=j+x;
}
else
if (d[j+x]>d[j]+y){
d[j+x]=y+d[i];
if (j+x>max) max=j+x;
}
}
min=max+1;
while(max>=w){
if (d[max]!=-1)
if (d[max]<min) min=d[max];
max--;
}
if (min==max+1) min=-1;
fprintf(g,"%ld\n",min);
fclose(f);
fclose(g);
return 0;
}