Pagini recente » Cod sursa (job #2012541) | Cod sursa (job #698748) | Monitorul de evaluare | Cod sursa (job #2050143) | Cod sursa (job #3233630)
#include <fstream>
#include <climits>
#include <vector>
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
int n, w;
vector<int> greutate, valoare, dp;
void printArr()
{
cout << '\n';
for(int i = 0;i<=w;i++)
cout << dp[i]<< " ";
}
int main()
{
cin>>n>>w;
greutate.resize(n+1), valoare.resize(n+1);
dp.resize(w+1, INT_MAX);
dp[0] = 0;
for(int i = 1;i<=n;i++)
cin>>greutate[i] >> valoare[i];
for(int i = 1;i<=n;i++)
{
for(int j = w - 1;j>=0;j--)
{
if(dp[j] == INT_MAX)
continue;
dp[min(w, j + greutate[i])] = min(dp[min(w, j+ greutate[i])], dp[j] + valoare[i]);
}
//printArr();
}
if(dp[w] == INT_MAX)
cout << -1;
else
cout << dp[w];
}