Pagini recente » Cod sursa (job #34435) | Cod sursa (job #258257) | Cod sursa (job #3164431) | Cod sursa (job #1825634) | Cod sursa (job #2716164)
#include <bits/stdc++.h>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
const int INF = 1e9;
struct object{
int val, wt;
} v[1001];
int n, W;
int minCost(int n, int W){
int mat[2][W + 1];
memset(mat, 0, sizeof(mat));
for(int i = 1;i <= W;i++)
mat[0][i] = INF;
int i = 1, x = 0, y = 1;
while(i <= n){
int j = 0;
while(++j <= W){
if(v[i].wt <= j) mat[y][j] = min(v[i].val + mat[x][j - v[i].wt], mat[x][j]);
else mat[y][j] = mat[x][j];
}
i++, x ^= 1, y ^= 1;
}
return (mat[x][W] == INF? -1 : mat[x][W]);
}
int main(){
f >> n >> W;
for(int i = 1;i <= n;i++)
f >> v[i].wt >> v[i].val;
g << minCost(n, W);
}