Cod sursa(job #1914265)

Utilizator alexilasiAlex Ilasi alexilasi Data 8 martie 2017 16:10:40
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <limits.h>

#define MAX_EN 5000

using namespace std;

int Gen_nr, En_need;
int Energy[MAX_EN + 1];
int En_max;
int sol;

int main(){

    ifstream fin("energii.in");
    ofstream fout("energii.out");

    int i, j;
    int En, Cost;

    fin>>Gen_nr>>En_need;

    Energy[0] = 1;

    for (i = 1; i <= Gen_nr; i++) {
        fin>>En>>Cost;

        for (j = En_max; j >= 0; j--) {
            if (Energy[j]) {
                if (j + En > En_need) {
                    if (Energy[En_need] > Energy[j] + Cost || Energy[En_need] == 0) {
                        Energy[En_need] = Energy[j] + Cost;
                    }
                } else {
                    if (Energy[j + En] > Energy[j] + Cost || Energy[j + En] == 0) {
                        Energy[j + En] = Energy[j] + Cost;
                    }
                }

                if (j + En > En_max) {
                    if (j + En >= En_need)
                        En_max = En_need;
                    else
                        En_max = j + En;
                }
            }
        }
    }

    if (Energy[En_need] == 0)
        fout<<"-1"<<'\n';
    else
        fout<<Energy[En_need] - 1<<'\n';

    fin.close();
    fout.close();
    return 0;
}