Cod sursa(job #2371879)

Utilizator AngelEclipseGarleanu Alexandru Stefan AngelEclipse Data 6 martie 2019 20:01:16
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda pregatire_cls12_oji Marime 0.88 kb
#include <bits/stdc++.h>
#define NMAX 1005
#define WMAX 15005
#define INF 0x3f3f3f3f
using namespace std;

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

pair<int, int> generators[NMAX];
int dp[WMAX];

int main()
{
    int n, w;
    f >> n >> w;
    for (int i = 1, tc, te; i <= n; i++)
    {
        f >> tc >> te;
        generators[i] = {tc, te};
    }
    for (int i = 1; i <= WMAX; i++)
    {
        dp[i] = INF;
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = w; j >= 0; j--)
        {
            if (dp[j] != INF)
                dp[j + generators[i].first] = min(dp[j + generators[i].first], dp[j] + generators[i].second);
        }
    }
    int answer = INF;
    for (int i = w; i <= w + 10000; i++)
    {
        answer = min(answer, dp[i]);
    }
    if (answer == INF)
        g << -1;
    else
        g << answer;
}