Cod sursa(job #2663833)

Utilizator david2003David Ghergut david2003 Data 27 octombrie 2020 13:49:22
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define limit 1000000000

using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
long long G, W, energie[100001], costul[100001], d[100001];
int main(){
    cin >> G >> W;
    for (int i = 1; i <= G; i++)
        cin >> energie[i] >> costul[i];
    for (int i = 1; i <= W; i++)
        d[i] = limit;
    long long raspuns = limit;
    for (int j = 1; j <= G; ++j){
        for (int i = W - 1; i >= 0; --i){
            if (d[i] != limit && i + energie[j] >= W)
                raspuns = min(raspuns, d[i] + costul[j]);
            else if (d[i] != limit)
                d[i + energie[j]] = min(d[i + energie[j]], d[i] + costul[j]);
        }
    }
    if (raspuns != limit)
        cout << raspuns;
    else
        cout << -1;
    return 0;
}