Pagini recente » Cod sursa (job #2612412) | Cod sursa (job #3135137) | Cod sursa (job #1061795) | Cod sursa (job #1802320) | Cod sursa (job #3193270)
#include <fstream>
#define Nmax 1010
#define MAX 99999999
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
int G, W;
int E[Nmax];
int C[Nmax];
int dp[5010];
int minn = MAX;
int main()
{
cin >> G >> W;
for(int i = 1; i<=G; i++)
cin >> E[i] >> C[i];
for(int i = 1; i<=W; i++)
dp[i] = MAX;
dp[0] = 0;
for(int i = 1; i<=G; i++)
for(int j = W; j>=0; j--)
{
if(dp[j] != MAX)
{
if(j + E[i] > W)
{
if(minn > dp[j] + C[i])
minn = dp[j] + C[i];
}
else if(dp[j + E[i]] > dp[j] + C[i])
dp[j + E[i]] = dp[j] + C[i];
}
}
if(minn == MAX && dp[W] == MAX)
{
cout << -1;
return 0;
}
if(minn < dp[W])
cout << minn;
else
cout << dp[W];
}