Pagini recente » Cod sursa (job #2962196) | Cod sursa (job #3152831) | Cod sursa (job #788291) | Cod sursa (job #1125998) | Cod sursa (job #703212)
Cod sursa(job #703212)
#include<fstream>
#include<algorithm>
#define NMAX 10010
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n, G, best[NMAX], vz[NMAX];
struct greutate
{
int x, y;
}a[NMAX];
void Pune(int greutate, int pret, int pz)
{
int i;
for (i=0; i<=G; ++i)
if (vz[i]!=pz && vz[i])
if (i+greutate<=G && best[i]+pret>best[i+greutate])
{
vz[i+greutate]=pz;
best[i+greutate]=best[i]+pret;
}
}
bool cmp(greutate a, greutate b)
{
return a.x<b.x;
}
void Citeste()
{
int x, y, i=1, mx=-1;
f>>n>>G; best[0]=0; vz[0]=-1;
for (; i<=G; ++i) best[i]=-1;
for (i=1; i<=n; ++i) f>>a[i].x>>a[i].y;
sort(a+1, a+n+1, cmp);
for (i=1; i<=n; ++i)
Pune(a[i].x, a[i].y, i);
for (i=1; i<=G; ++i)
if (best[i]>mx) mx=best[i];
g<<mx<<"\n";
}
int main()
{
Citeste();
f.close();
g.close();
return 0;
}