Pagini recente » Cod sursa (job #1393709) | Cod sursa (job #1458785) | Cod sursa (job #1268701) | Cod sursa (job #2624473) | Cod sursa (job #705715)
Cod sursa(job #705715)
#include <stdio.h>
#include <climits>
#define MAX_GEN 1002
#define MAX_EN 5002
#define FOR(i, a, b) for (i = a; i <= b; ++i)
inline int min(int a, int b){
return a < b? a : b;
}
int main(){
freopen("energii.in","r", stdin);
freopen("energii.out","w", stdout);
int g, w, eg[MAX_GEN], cg[MAX_GEN], **e, i, j;
scanf("%d%d", &g, &w);
FOR(i, 1, g){
scanf("%d %d", eg + i, cg + i);
}
fclose(stdin);
/* allocate the 2D e array */
e = new int*[g+1];
FOR(i,0,g){
e[i] = new int[w+1];
}
/* compute the minimum cost in matrix e[i][j],
the minimum cost of choosing from generators 1 to i, with a minimum energy requirement of j
*/
FOR(j,0,w){
e[0][j] = -1;
}
FOR(i,0, g){
e[i][0] = -1;
}
FOR(i, 1, g){
FOR(j,1,w){
if(j-eg[i] >= 0){
e[i][j] = min(e[i-1][j], e[i-1][j-eg[i]] + cg[i]);
}
else {
e[i][j] = e[i-1][j];
}
}
}
printf("%d", e[g][w]);
fclose(stdout);
/* deallocate e 2D array */
FOR(i, 0, g){
delete[] e[i];
}
delete[] e;
return 0;
}