Pagini recente » Cod sursa (job #969050) | Cod sursa (job #36544) | Cod sursa (job #487981) | Cod sursa (job #2902749) | Cod sursa (job #1712155)
#include <fstream>
#define INF 9999999
#define GMAX 1005
#define WMAX 5005
#define MIN(a,b) (((a)<(b))?(a):(b))
using namespace std;
int d[GMAX][WMAX], i ,j, c[GMAX], e[GMAX], mn = 99999999, g1, w, cmax,ver;
int main()
{
ifstream f("energii.in");
ofstream g("energii.out");
f>>g1>>w;
for(i=1;i<=g1;i++)
{
f>>e[i];
f>>c[i];
}
for(i=0;i<=g1;i++)
for(j=0; j<=WMAX; j++)
d[i][j] = INF;
j=0;
for(i=1;i<=g1;i++)
d[i][j]=0;
for(i=1;i<=g1;i++)
for(j=1;j<=WMAX;j++)
{
d[i][j] = d[i-1][j];
if(j>=e[i])
d[i][j] = MIN(d[i-1][j], d[i-1][j-e[i]]+c[i]);
}
i=g1;
mn=100000000;
for(j=w;j<=WMAX-1;j++)
if(mn>d[i][j])
{
mn=d[i][j];
}
for(i=1;i<=g1;i++)
{
ver=ver+e[i];
if(mn>c[i] && e[i]>=w)
mn=c[i];
}
if(ver>=w)
g<<mn;
else
g<<"-1";
}