Pagini recente » Cod sursa (job #1481660) | Cod sursa (job #165284) | Cod sursa (job #2314880) | Cod sursa (job #2944706) | Cod sursa (job #2311733)
#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;
}