Cod sursa(job #3193263)

Utilizator bogdan.stan18Bogdan Stan bogdan.stan18 Data 14 ianuarie 2024 13:28:25
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define Nmax 1010
#define MAX 99999999
using namespace std;

ifstream cin("energii.in");
ofstream cout("energii.out");

int G, W;
int E[Nmax];
int C[Nmax];

int dp[5010];
int minn = MAX;

int main()
{
    cin >> G >> W;
    for(int i = 1; i<=G; i++)
        cin >> E[i] >> C[i];

    for(int i = 1; i<=W; i++)
        dp[i] = MAX;

    dp[0] = 0;

    for(int i = 1; i<=G; i++)
        for(int j = W; j>=0; j--)
        {
            if(dp[j] != MAX)
            {
                if(j + E[i] > W)
                {
                    if(minn > dp[j] + C[i])
                        minn = dp[j] + C[i];
                }

                else if(dp[j + E[i]] > dp[j] + C[i])
                    dp[j + E[i]] = dp[j] + C[i];

            }

        }

    if(minn == MAX && dp[W] == MAX)
    {
        cout << -1;
        return 0;
    }


    if(minn < dp[W])
        cout << minn;

    else
        cout << dp[W];

    cin.close();
    cout.close();

}