Cod sursa(job #2716164)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 4 martie 2021 19:39:15
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#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);
}