Cod sursa(job #1681605)

Utilizator preda.andreiPreda Andrei preda.andrei Data 9 aprilie 2016 16:42:21
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <cstdio>

using namespace std;

int d[10005];

int main()
{
    FILE *fin = fopen("energii.in", "r");
    FILE *fout = fopen("energii.out", "w");

    int n, costMin, energie, cost, enMax = 0, rez;

    for(int i = 1; i <= 10000; ++i)
        d[i] = -1;

    fscanf(fin, "%d%d", &n, &costMin);
    d[0] = 0;
    for(int i = 1; i <= n; ++i){
        fscanf(fin, "%d%d", &energie, &cost);
        for(int j = enMax; j >= 0; --j){
            if(j + energie <= 10000 && d[j] != -1 && (d[j + energie] == -1 || d[j] + cost < d[j + energie])){
                if(j + energie > enMax)
                    enMax = j + energie;
                d[j + energie] = d[j] + cost;
            }
        }
    }

    rez = 0;
    d[0] = -1;
    for(int i = costMin; i <= enMax; ++i)
        if(d[i] != -1 && (rez == 0 || d[i] < d[rez]))
            rez = i;

    fprintf(fout, "%d", d[rez]);
    return 0;
}