Pagini recente » Cod sursa (job #2806157) | Cod sursa (job #1554264) | Cod sursa (job #658654) | Cod sursa (job #2423451) | Cod sursa (job #2486457)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
int n, gr[5010], co[5010], gmax;
long long x[15010], y[15010];
int main()
{
int i, j=0;
fin>>n>>gmax;
for(i=1; i<=n; i++)
{
fin>>gr[i]>>co[i];
if(i-gr[i]>0)
{
if(i%2==1)
{
if(y[i-gr[i]]+co[i]>y[i])
x[i]=y[i-gr[i]]+co[i];
else
x[i]=y[i];
}
else
{
if(x[i-gr[i]]+co[i]>x[i])
y[i]=x[i-gr[i]]+co[i];
else
y[i]=x[i];
}
}
}
for(j=2; j<=n; j++)
{
for(i=1; i<=gmax; i++)
{
if(i-gr[j]>0)
{
if(j%2==1)
{
if(y[i-gr[j]]+co[j]>y[i])
x[i]=y[i-gr[j]]+co[j];
else
x[i]=y[i];
}
else
{
if(x[i-gr[j]]+co[j]>x[i])
y[i]=x[i-gr[j]]+co[j];
else
y[i]=x[i];
}
}
else
if(j%2==1)
x[i]=y[i];
else
y[i]=x[i];
}
}
if(n%2==1) fout<<x[gmax];
else fout<<y[gmax];
fin.close();
fout.close();
return 0;
}