Cod sursa(job #2394685)

Utilizator dorel02Dorel Surubelnita dorel02 Data 1 aprilie 2019 20:09:44
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;
int G;          //nr generatoare
int W;          //cant min de energie

int E[1005];    //energia produsa de generatoru i
int C[1005];    //costu pornirii generatorului i

int d[1005][1005]; //d[i][j] = energia produsa de minim i generatoare cu costul maxim j
int main()
{
    ifstream in ("energii.in");
    ofstream out ("energii.out");

    in>>G;
    in>>W;
    int minim = 1e9;

    int cost_total = 0;
    for(int i = 1; i <= G; ++i)
    {
        in>>E[i]>>C[i];
        cost_total += C[i];
    }

    for(int i = 1; i <= G; ++i)
        for(int j = 0; j <= cost_total; ++j)
        {
            d[i][j] = d[i - 1][j];
            if(j >= C[i])
                d[i][j] = max(d[i][j], d[i][j - C[i]] + E[i]);
            if(d[i][j] >= W)
            {
                if(j < minim)
                    minim = j;
            }
        }
    if(minim != 1e9)
        out<<minim;
    else
        out<<"-1";
    return 0;
}