Cod sursa(job #2966712)

Utilizator Luka77Anastase Luca George Luka77 Data 18 ianuarie 2023 11:01:37
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>
using namespace std;

/// INPUT / OUTPUT
ifstream fin("energii.in");
ofstream fout("energii.out");

/// GLOBAL VARIABLES
const int GMAX = 1001;
int g, w;
int G[GMAX], W[GMAX];
int dp[GMAX][5*GMAX];

/// SOLUTION (I HOPE)
inline void solution()
{
    for(int i = 1; i <= g; ++ i)
    {
        dp[i][G[i]] = max(dp[i-1][G[i]], W[i]);
        for(int j = 1; j <= w; ++ j)
        {
            //cout << dp[i][j] << ' ';
            if(j - W[i] >= 0)
                if(dp[i-1][j] || dp[i-1][j-W[i]])
                    dp[i][j] = max(dp[i-1][j], dp[i-1][j-W[i]] + W[i]);
            else
                dp[i][j] = dp[i-1][j];
        }
        //cout << '\n';
    }
    for(int i = 1; i <= g; ++ i)
    {
        for(int j = 1; j <= w; ++ j)
        {
            //cout << dp[i][j] << ' ';
        }
        //cout << '\n';
    }
    if(dp[g][w])
        fout << dp[g][w];
    else
        fout << -1;
}

/// READING THE INPUT
int main()
{
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);
    fin >> g >> w;
    for(int i = 1; i <= g; ++ i)
    {
        fin >> G[i] >> W[i];
    }
    solution();
}