Pagini recente » Cod sursa (job #1939355) | Cod sursa (job #2410463) | Cod sursa (job #927134) | Cod sursa (job #2456878) | Cod sursa (job #2700641)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 1000
#define SMAX 10000000
int e[NMAX+1], c[NMAX+1];
int cost[2][SMAX];
int main() {
FILE *fin, *fout;
int n, w, se, sc, i, j, g, b;
fin = fopen( "energii.in", "r" );
fscanf( fin, "%d%d", &n, &w );
se = sc = 0;
for( i = 1; i <= n; i++ ) {
fscanf( fin, "%d%d", &e[i], &c[i] );
se += e[i];
sc += c[i];
}
fclose( fin );
fout = fopen( "energii.out", "w" );
if( se < w )
fprintf( fout, "-1\n" );
else {
g = se - w;
for( i = 1; i <= n; i++ ) {
for( j = 0; j <= g; j++ ) {
b = i & 1;
cost[b][j] = cost[1-b][j];
if( j >= e[i] && cost[b][j] < cost[1-b][j-e[i]] + c[i] )
cost[b][j] = cost[1-b][j-e[i]] + c[i];
}
}
fprintf( fout, "%d\n", sc - cost[n&1][g] );
}
fclose( fout );
return 0;
}