Cod sursa(job #1208246)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 15 iulie 2014 11:23:17
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define MAX_INT 10000000

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

int e, w, v[2][5001], i, j, a, b;

int main() {
    fscanf(fin, "%d", &e);

    fscanf(fin, "%d", &w);

    v[0][0] = 1;

    for(i = 1;i <= w;i++) {
        v[1][i] = MAX_INT;
    }

    for(i = 1;i <= e;i++) {
        fscanf(fin, "%d %d", &a, &b);

        for(j = w;j >= 0;j--) {
            if(v[0][j] == 1) {
                v[0][min(w, j + a)] = 1;
                v[1][min(w, j + a)] = min(v[1][min(w, j + a)], b + v[1][j]);
            }
        }
    }

    if(v[0][w] == 0) {
        fprintf(fout, "-1\n");
    }
    else {
        fprintf(fout, "%d\n", v[1][w]);
    }

    fclose(fin);
    fclose(fout);

    return 0;
}