Pagini recente » Cod sursa (job #3037568) | Cod sursa (job #1567290) | Cod sursa (job #2232556) | Cod sursa (job #2470633) | Cod sursa (job #2219045)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
int cost[1002];
int powgen[1002];
int arr[1002][5002];
int energy(int n, int capacity) {
if (arr[n][capacity]!= -1) return arr[n][capacity];
int result;
if (n == 0)
result = 1<<31-1;
else if (capacity <= powgen[n]) {
result = cost[n];
}
else {
int tmp1 = energy(n - 1, capacity); // nu se alege
int tmp2 = cost[n] + energy(n - 1, capacity - powgen[n]); // se alege
result = min(tmp1, tmp2);
}
arr[n][capacity] = result;
return result;
}
int main() {
ifstream fin("energii.in");
ofstream fout("energii.out");
memset(arr,-1,sizeof(arr));
int n,c;
fin >> n >> c;
for (int i = 1; i <= n; i++) {
fin >> powgen[i];
fin >> cost[i];
}
int res = energy(n, c);
if (res == 1 << 31 - 1) {
res = -1;
}
fout << res;
return 0;
}