Pagini recente » Cod sursa (job #2638008) | Cod sursa (job #1945661) | Cod sursa (job #814401) | Cod sursa (job #282) | Cod sursa (job #327920)
Cod sursa(job #327920)
#include <stdio.h>
FILE *f,*g;
long min,max=0,n,w,i,j,x,y;
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<=n;i++){
fscanf(f,"%ld%ld",&x,&y);
for (j=max;j>0;j--)
if (d[j]!=0)
if (d[j+x]==0){
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;
}
if (d[x]==0){
d[x]=y;
if (x>max) max=x;
}
else
if (d[x]>y){
d[x]=y;
if (x>max) max=x;
}
}
min=max+1;
while(max>=w){
if (d[max]!=0)
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;
}