Pagini recente » Monitorul de evaluare | Cod sursa (job #2789855) | Cod sursa (job #3348843) | Cod sursa (job #1909862) | Cod sursa (job #3348903)
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct Energie {
int nr, cost;
};
Energie v[100001];
int dp[100001];
signed main()
{
ifstream cin("energii.in");
ofstream cout("energii.out");
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> v[i].nr >> v[i].cost;
int maxSum = 100000;
for (int i = 0; i <= maxSum; i++)
dp[i] = LLONG_MAX;
dp[0] = 0;
for (int i = 1; i <= n; i++)
{
for (int j = maxSum - v[i].nr; j >= 0; j--)
{
if (dp[j] != LLONG_MAX)
dp[j + v[i].nr] = min(dp[j + v[i].nr], dp[j] + v[i].cost);
}
}
int minim = LLONG_MAX;
for (int i = k; i <= maxSum; i++)
minim = min(minim, dp[i]);
if (minim == LLONG_MAX)
cout << -1;
else
cout << minim;
return 0;
}