Pagini recente » Cod sursa (job #479315) | Cod sursa (job #510013) | Cod sursa (job #1601690) | Cod sursa (job #1993161) | Cod sursa (job #2468053)
#include <stdio.h>
#include <stdlib.h>
#define GMAX 1001
#define EMAX 5001
#define BIG 1e9
int W[GMAX],P[GMAX],profit[EMAX];
int minim(int a, int b){
return a < b ? a : b;
}
int main()
{
FILE *fin, *fout;
int g,E,i,j,ans;
fin = fopen("energii.in","r");
fout = fopen("energii.out","w");
fscanf(fin,"%d\n%d\n",&g,&E);
for(i=0;i<g;i++)
fscanf(fin,"%d %d",&P[i],&W[i]);
for(j=1;j<=E;j++)
profit[j] = -1;
ans = BIG;
for(i=0;i<g;i++)
for(j=E;j>=0;j--)
if(profit[j]!=-1){
if(j+P[i] >= E){
if(profit[E] == -1)
profit[E] = profit[j]+W[i];
else
profit[E] = minim(profit[E],profit[j]+W[i]);
ans = minim(ans, profit[E]);
}
else{
if(profit[j+P[i]] == -1)
profit[j+P[i]] = profit[j] + W[i];
else
profit[j+P[i]] = minim(profit[j+P[i]],profit[j]+W[i]);
}
}
if(ans == BIG)
fprintf(fout,"-1");
else
fprintf(fout,"%d",ans);
fclose(fin);
fclose(fout);
return 0;
}