Pagini recente » Cod sursa (job #2093740) | Cod sursa (job #1259197) | Cod sursa (job #41532) | Cod sursa (job #233612) | Cod sursa (job #2588085)
#include <stdio.h>
#include <algorithm>
#define NMAX 10001
#define WMAX 5001
#define VMAX 10001
#define INF 1000000000
struct energii {
int cant;
int cost;
};
struct energii v[NMAX+1];
int d[2][VMAX+2];
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;
}
for(j=1;j<=VMAX;j++){
d[0][j]=INF;
}
///d[1][v[1].cant]=v[1].cost; //initializare
for(i=1;i<=n;i++){
d[i%2][0]=0;
for(j=1;j<=VMAX;j++)
d[i%2][j]=INF;
for(j=1;j<=VMAX;j++){
if(j>=v[i].cant)
d[i%2][j]=std::min(d[i%2][j], d[(i-1)%2][j-v[i].cant]+v[i].cost);
d[i%2][j]=std::min(d[i%2][j], d[(i-1)%2][j]);
}
}
MIN=INF;
for(j=W;j<=VMAX;j++){
if(d[n%2][j]<MIN){
MIN=d[n%2][j];
}
}
if(MIN!=INF)
fprintf(fout,"%d",MIN);
else
fprintf(fout,"-1");
fclose(fin);
fclose(fout);
return 0;
}