Pagini recente » Cod sursa (job #2584024) | Cod sursa (job #395584) | Cod sursa (job #3195939) | Cod sursa (job #46679) | Cod sursa (job #458927)
Cod sursa(job #458927)
#include<stdio.h>
#include<stdlib.h>
int g,w,e[10001],c[10001];
int vector[50005001],vector2[50005001];
int main(){
int i,j,aux;
FILE *fin=fopen("energii.in","r");
fscanf(fin,"%d",&g);
fscanf(fin,"%d",&w);
for(i=1;i<=g;i++)
fscanf(fin,"%d %d",&e[i],&c[i]);
/*for(i=1;i<=g;i++)
printf("%d %d \n",e[i],c[i]);
*/
//printf("w=%d",w);
FILE *fout=fopen("energii.out","w");
long min=500000000;
int puse=1;
vector[1]=e[1];
vector2[1]=c[1];
for(j=2;j<=g;j++){
puse*=2;
if(c[j]<min){
vector[puse]=e[j];
vector2[puse]=c[j];
if((vector[puse]>=w)&&(min>vector2[puse]))
min=vector2[puse];
for(i=1;i<puse;i++){
vector[i+puse]=vector[puse]+vector[i];
vector2[i+puse]=vector2[puse]+vector2[i];
if((vector[i+puse]>=w)&&(min>vector2[i+puse]))
min=vector2[i+puse];
}
}
else
puse=puse/2;
}
/*for(i=1;i<2*puse;i++)
printf("%d %d \n",vector[i],vector2[i]);*/
if(min!=500000000)
fprintf(fout,"%d\n",min);
else
fprintf(fout,"-1\n");
return 0;
}