Cod sursa(job #2361883)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 2 martie 2019 19:52:54
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <iostream>
#include <cstring>
#define Nmax 1003
#define INF 0x3f3f3f3f

using namespace std;


ifstream f("energii.in");
ofstream g("energii.out");

int n, W, x, y, wt;
pair <int, int> v[Nmax]; // energia, costul;
int dp[Nmax][5001]; // costul minim pt a obtine j unit de energie cu i generatoare

int main()
{
    f >> n >> W;
    for (int i = 1, x, y; i <= n; i++)
    {
        f >> x >> y;
        v[i]={x, y};
        wt+=x;
    }
    if(wt < W)
    {
        g << "-1";
        return 0;
    }

    memset(dp, INF, sizeof(dp));
    dp[0][0]=0;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j <= W; j++)
        {
            dp[i][j]=min(dp[i-1][j], v[i].second);
            if(j-v[i].first<=0) continue;
            dp[i][j]=min(dp[i-1][j], dp[i-1][j-v[i].first]+v[i].second);
        }
    }

    /*for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j <= W; j++)
            cout << dp[i][j] << " ";
        cout << '\n';
    }*/

    g << dp[n][W];

    return 0;
}