Pagini recente » Cod sursa (job #575916) | Cod sursa (job #745687) | Cod sursa (job #2804699) | Cod sursa (job #250308) | Cod sursa (job #2370123)
#include <iostream>
#include <fstream>
#include <algorithm>
#define inf 0x3f3f3f3f
#define NMAX 1005
#define WMAX 15005
using namespace std;
ifstream fi("energii.in");
ofstream fo("energii.out");
int N, W;
pair<int, int> generators[NMAX];
int dp[WMAX];
int main()
{
fi >> N;
fi >> W;
int a, b;
for(int i = 1; i <= N; ++i)
{
fi >> a >> b;
generators[i] = {a, b};
}
for(int i = 1; i <= WMAX; ++i)
dp[i] = -1;
for(int i = 1; i <= N; ++i)
{
for(int j = W; j >= 0; --j)
{
if(dp[j] != -1)
{
if(dp[j + generators[i].first] != -1)
dp[j + generators[i].first] = min(dp[j + generators[i].first], generators[i].second + dp[j]);
else
dp[j + generators[i].first] = generators[i].second;
}
}
}
int minn = inf;
for(int i = W; i <= W + 10000; ++i)
if(dp[i] != -1)
minn = min(minn, dp[i]);
if(minn == inf)
fo << -1;
else
fo << minn;
}