Pagini recente » Cod sursa (job #1475395) | Cod sursa (job #151702) | Cod sursa (job #30223) | Cod sursa (job #738488) | Cod sursa (job #1999659)
#include <stdio.h>
#include <stdlib.h>
#define min(a,b) (a < b? a : b)
#define MAX 10001
#define CAP_MAX 10001
#define INFINITE 1000000001
int n, W;
int energie[MAX], cost[MAX];
int v[CAP_MAX][MAX];
void readInput (){
int i;
FILE *f= fopen("energii.in","r");
fscanf(f,"%d%d", &n,&W);
for (i = 1; i <= n; i++)
fscanf(f,"%d%d", &energie[i],&cost[i]);
}
void run ()
{
int i, j, k;
FILE *g= fopen("energii.out","w");
for ( j=1; j<=W; j++)
v[0][j]=INFINITE;
for ( i = 0; i <= W; i++)
v[0][i] = INFINITE;
for ( i = 0; i <= n; i++)
v[i][0] = INFINITE;
for ( i = 1; i <= n; i++)
for ( j = 1; j <= W; j++){
v[i][j] = v[i-1][j];
if ( energie[i] >= j )
v[i][j] =min( v[i-1][j],cost[i]);
else v[i][j]=min(v[i-1][j],v[i - 1][j - energie[i]]+ cost[i]);
}
if( v[n][W] < INFINITE)
fprintf(g,"%d", v[n][W]);
else fprintf(g,"-1");
}
int main()
{
readInput();
run();
return 0;
}