Cod sursa(job #3356221)

Utilizator TudorPetTudor Petrescu TudorPet Data 30 mai 2026 13:32:40
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct generator{
    int val;
    int cost;
};
struct sum{
    bool val;
    int cost = 1e9;
};
int main()
{
    generator v[1001];
    sum suma[15001];
    int g, w;
    fin >> g >> w;
    int sumaux;
    for(int i = 1; i <= g; i++) {
        fin >> v[i].val >> v[i].cost;
        sumaux += v[i].val;
    }
    if(sumaux < w) {
        fout << -1;
        return 0;
    }
    suma[0].val = 1;
    suma[0].cost = 0;
    int smax = 0;
    for(int i = 1; i <= g; i++) {
        for(int j = smax; j >= 0; j--) {
            int aux = j + v[i].val;
            if(suma[j].val != 0 && aux <= 15000) {
                suma[aux].val = 1;
                suma[aux].cost = min(v[i].cost + suma[j].cost, suma[aux].cost);
            }
        }
        smax = min(v[i].val+ smax, 15000);
    }
    int mini = INT_MAX;
    for(int i = w; i <= smax; i++) {
        if(suma[i].val == 1) {
            mini = min(mini, suma[i].cost);
        }
    }
    fout << mini;
    return 0;
}