Cod sursa(job #2311733)

Utilizator alex12_roGuster Alexandru alex12_ro Data 3 ianuarie 2019 17:19:37
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;

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

int cost[1002];
int powgen[1002];

array<int,5002> arr;


int energy (int n, int capacity) {
    for (int i = 0; i < n; i++) {
        for (int j = capacity; j >= 0; j--) {
            if(arr[j]==INT_MAX) continue;
            if (j + powgen[i] <= capacity ) {
                arr[j+powgen[i]] = min (arr[j+powgen[i]], arr[j]+cost[i]);
            } else {
                arr[capacity] = min (arr[capacity], arr[j] + cost[i]);
            }
        }
    }
    return arr[capacity];
}

void readGeneratorData (int n) {
    for (int i = 0; i < n; i++) {
        fin >> powgen[i];
        fin >> cost[i];
    }
}
void fillArray (int n, int val) {
    for (int i = 1; i <= n; i++) {
        arr[i] = val;
    }
}
int main() {


    int n, c;
    fin >> n >> c;
    fillArray (c, INT_MAX);
    readGeneratorData (n);

    int res = energy (n, c);
    if (res == INT_MAX) {
        res = -1;
    }
    fout << res;
    return 0;
}