Pagini recente » Cod sursa (job #2984522) | Cod sursa (job #2733062) | Cod sursa (job #2405679) | Cod sursa (job #829325) | Cod sursa (job #2626652)
#include <stdio.h>
#define INF 1000000000
#define min( a, b ) a < b ? a : b
int cost[1001], e[1001];
int minCost[1001][5002];
int main() {
FILE *fin = fopen( "energii.in", "r" );
FILE *fout = fopen( "energii.out", "w" );
int G, W, i, j, s;
fscanf( fin, "%d%d", &G, &W );
s = 0;
for ( i = 1; i <= G; ++i ) {
fscanf( fin, "%d%d", &e[i], &cost[i] );
s += e[i];
}
for ( j = 0; j <= W; ++j ) {
if ( e[1] >= j ) {
minCost[1][j] = cost[1];
} else {
minCost[1][j] = INF;
}
}
for ( i = 2; i <= G; ++i ) {
for ( j = 0; j <= W; ++j ) {
if ( e[i] < j ) {
minCost[i][j] = min( minCost[i - 1][j], minCost[i - 1][j - e[i]] + cost[i] );
} else {
minCost[i][j] = min( minCost[i - 1][j], cost[i] );
}
}
}
if ( s >= W ) {
fprintf( fout, "%d", minCost[G][W] );
} else {
fprintf( fout, "-1" );
}
fclose( fin );
fclose( fout );
return 0;
}