Pagini recente » Cod sursa (job #1609459) | Cod sursa (job #3173568) | Cod sursa (job #1513461) | Cod sursa (job #2764974) | Cod sursa (job #4503)
Cod sursa(job #4503)
#include <stdio.h>
#define N_MAX 10001
#define G_MAX 1001
#define INF 80000000
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]);
for (int i=1;i<N_MAX;i++)
v[i]=-1;
fclose(fin);
}
void prelucrare(){
int i,j;
max=w;
for (i=1;i<=g;i++){
for (j=w;j>=1;j--)
if(v[j]!=-1){
if (v[j+eg[i]]!=-1)
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]]!=-1)
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=INF;
FILE *fout=fopen("energii.out","w");
for (i=w;i<=max;i++)
if (v[i]<min&&v[i]>=0)
min=v[i];
if (min==INF)
fprintf(fout,"-1\n");
else
fprintf(fout,"%d\n",min);
fclose(fout);
}
int main(){
citire();
prelucrare();
afisare();
return 0;
}