Pagini recente » Cod sursa (job #1998953) | Cod sursa (job #445747) | Cod sursa (job #326090) | Cod sursa (job #1376984) | Cod sursa (job #4497)
Cod sursa(job #4497)
#include <stdio.h>
#define N_MAX 10001
#define G_MAX 1001
int w,g,v[N_MAX],eg[G_MAX],cg[G_MAX],max;
void citire(){
FILE *fin=fopen("energii.in","r");
fscanf(fin,"%d",&g);
fscanf(fin,"%d",&w);
for (int i=1;i<=g;i++)
fscanf(fin,"%d %d",&eg[i],&cg[i]);
fclose(fin);
}
void prelucrare(){
int i,j;
max=w;
for (i=1;i<=g;i++){
for (j=g;j>=1;j--)
if(v[j]!=0) {
if (v[j+eg[i]]!=0)
if (v[j+eg[i]]>v[j]+cg[i])
v[j+eg[i]]=v[j]+cg[i];
else;
else
v[j+eg[i]]=v[j]+cg[i];
if (j+eg[i]>max)
max=j+eg[i];
}
if (v[eg[i]]!=0)
if (v[eg[i]]>cg[i])
v[eg[i]]=cg[i];
else;
else{
v[eg[i]]=cg[i];
if (eg[i]>max)
max=eg[i];
}
}
}
void afisare(){
int i,min=v[w];
FILE *fout=fopen("energii.out","w");
for (i=w+1;i<=max;i++)
if (v[i]<min&&v[i]!=0)
min=v[i];
if (min==0)
fprintf(fout,"-1\n");
else
fprintf(fout,"%d\n",min);
fclose(fout);
}
int main(){
citire();
prelucrare();
afisare();
return 0;
}