Cod sursa(job #2568075)

Utilizator pregoliStana Andrei pregoli Data 3 martie 2020 20:43:55
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<bits/stdc++.h>
#define newline '\n'
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
///********************

const int GMAX = 1005, WMAX = 5005;
struct
{
   int e, c;
} v[GMAX];
int dp[GMAX][WMAX];
int g, w;

int main()
{
    fin >> g >> w;
     for (int i = 1; i <= g; i++)
        fin >> v[i].e >> v[i].c;

    for (int i = 1; i <= g; i++)
        for (int j = 1; j <= w; j++)
            dp[i][j] = INT_MAX;

    dp[1][v[1].e] = v[1].c;
    for (int i = 2; i <= g; i++)
    {
        for (int cw = 1; cw <= w; cw++)
        {
            dp[i][cw] = dp[i - 1][cw];
            if (v[i].e <= cw)
                dp[i][cw] = min(dp[i][cw], dp[i - 1][cw - v[i].e] + v[i].c);
            else
                dp[i][cw] = min(dp[i][cw], v[i].c);
        }
    }

    if (dp[g][w] != INT_MAX)
        fout << dp[g][w];
    else
        fout << -1;

    return 0;
}