Cod sursa(job #2512015)

Utilizator SochuDarabaneanu Liviu Eugen Sochu Data 20 decembrie 2019 13:45:12
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
#define WMAX 5000
#define LIMIT 99999999

using namespace std;

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

short G , W , e , c;
int rucsac[WMAX + 5];

int main()
{
    short i , j;

    f >> G;
    f >> W;

    fill(rucsac + 1 , rucsac + WMAX + 1 , -1);

    int ans = LIMIT;

    for(i = 1 ; i <= G ; i++)
    {
        f >> e >> c;

        for(j = WMAX ; j >= 0 ; j--)
        {
            if(rucsac[j] != -1)
            {
                if(j + c >= W)
                    ans = min(ans , rucsac[j] + c);

                if(rucsac[j + c] == -1 || rucsac[j + c] > rucsac[j] + e)
                    rucsac[j + c] = rucsac[j] + e;
            }
        }
    }

    if(ans == LIMIT)
        g << -1;
    else g << ans;

    return 0;
}