Pagini recente » Cod sursa (job #811219) | Cod sursa (job #2178668) | Cod sursa (job #1167821) | Cod sursa (job #2170150) | Cod sursa (job #2457015)
#include <iostream>
#include <fstream>
#define MaxN 1001
#define MaxW 5001
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n,w;
int e[MaxN],c[MaxW];
int sol[MaxN][MaxW];
int minim(int a,int b)
{
if(a!= -1 && b!=-1)
return min(a,b);
if(a==-1)
return b;
else
return a;
}
int main()
{
f>>n>>w;
for(int i=1;i<=n;i++)
{
f>>e[i]>>c[i];
}
for(int i=1;i<=w;i++)
sol[0][i]=-1;
for(int i=1;i<=n;i++)
for(int j=1;j<=w;j++)
{
if(e[i]>=j)
{
sol[i][j]=minim(c[i],sol[i-1][j]);
}
else if(sol[i-1][j-e[i]]==-1)
sol[i][j]=-1;
else
{
sol[i][j]=minim(sol[i-1][j],sol[i-1][j-e[i]]+c[i]);
}
}
g<<sol[n][w];
f.close();
g.close();
return 0;
}