Pagini recente » Cod sursa (job #1367482) | Cod sursa (job #1058344) | Cod sursa (job #2587524) | Cod sursa (job #2070725) | Cod sursa (job #2535768)
#include <fstream>
#include <climits>
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
int main()
{
int n,w,v[1005],c[1005],lim=0;
fin >> n >> w;
for (int i=1;i<=n;i++)
{
fin >> v[i] >> c[i];
}
int dp[2][5005];
for (int i=0;i<=w;i++)
{
if (i>v[1]) dp[0][i]=INT_MAX;
else dp[0][i]=c[1];
}
for (int i=2;i<=n;i++)
{
for (int j=1;j<=w;j++)
{
if (v[i]>=j) dp[1][j]=min(dp[0][j],c[i]);
else if (dp[0][j-v[i]]!=INT_MAX) dp[1][j]=min(dp[0][j],dp[0][j-v[i]]+c[i]);
else dp[1][j]=dp[0][j];
}
for (int j=0;j<=lim;j++)
{
dp[0][j]=dp[1][j];
}
}
if (dp[1][w]!=INT_MAX) fout << dp[1][w];
else fout << -1;
}