Pagini recente » Cod sursa (job #1130825) | Cod sursa (job #1770263) | Cod sursa (job #626597) | Cod sursa (job #1091796) | Cod sursa (job #3305038)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n, need, dp[15010], sum = 0; ///dp[i] = costul minim producerii de o energie = i
struct Iris {
int energie, cost;
}v[1010];
int main()
{
fin >> n >> need;
for(int i=1; i<=n; i++) {
fin >> v[i].energie >> v[i].cost;
sum += v[i].energie;
}
if(sum < need) {
fout << -1;
return 0;
}
for(int i=1; i<=n; i++)
for(int j=15000; j>=v[i].energie; j--) dp[j] = max(dp[j], dp[j - v[i].energie] + v[i].cost);
int minim = 2e9;
for(int i=need; i<=15000; i++)
if(dp[i] != 0) minim = min(minim, dp[i]);
fout << minim;
return 0;
}