Pagini recente » Cod sursa (job #2876124) | Cod sursa (job #2174780) | Cod sursa (job #1416972) | Cod sursa (job #2760912) | Cod sursa (job #2587811)
#include <stdio.h>
#include <algorithm>
#define NMAX 10001
#define WMAX 5001
#define INF 1000000000
struct energii {
int cant;
int cost;
};
struct energii v[NMAX+1];
int d[NMAX+1][NMAX+1];
int main()
{
FILE *fin,*fout;
fin=fopen("energii.in","r");
fout=fopen("energii.out","w");
int n,W,i,j,total,MIN;
fscanf(fin,"%d%d",&n,&W);
total=0;
for(i=1;i<=n;i++){
fscanf(fin,"%d%d",&v[i].cant,&v[i].cost);
total+=v[i].cant;
}
if(total<W){
fprintf(fout,"-1");
}
else{
for(i=0;i<=n;i++){
for(j=0;j<=WMAX;j++){
d[i][j]=INF;
}
}
d[1][v[1].cant]=v[1].cost; //initializare
for(i=2;i<=n;i++){
for(j=v[i].cant;j<=WMAX;j++){
d[i][j]=std::min(d[i-1][j-v[i].cant]+v[i].cost,d[i][j]);
}
}
MIN=INF;
for(j=W;j<=total;j++){
if(d[n][j]<MIN){
MIN=d[n][j];
}
}
fprintf(fout,"%d",MIN);
}
fclose(fin);
fclose(fout);
return 0;
}