Pagini recente » Cod sursa (job #2703280) | Cod sursa (job #2724743) | Cod sursa (job #668979) | Cod sursa (job #1162175) | Cod sursa (job #1183712)
#include <fstream>
#include <limits.h>
#define NMax 1010
#define GMax 5010
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct obiect {int val,we;};
obiect a[NMax];
int ruc[NMax][GMax];
int mini=INT_MAX,xm,ym,i,j,n,g;
void citire()
{fin>>n>>g;
for (i=1;i<=n;i++)
fin>>a[i].val>>a[i].we;
}
void rezolvare()
{for (i=1;i<=n;i++)
for (j=1;j<=g;j++)
if ((a[i].we<=j) && (a[i].val+ruc[i-1][j-a[i].we]>ruc[i-1][j]))
ruc[i][j]=a[i].val+ruc[i-1][j-a[i].we];
else
ruc[i][j]=ruc[i-1][j];
}
int main()
{citire();
rezolvare();
for (i=1;i<=n;i++)
for (j=1;j<=g;j++)
if (ruc[i][j]>=g)
if (j<mini)
{mini=ruc[i][j];
xm=i;
ym=j;
}
if (mini!=INT_MAX)
fout<<j;
return 0;
fout<<"-1";
return 0;
}