Pagini recente » Cod sursa (job #356716) | Cod sursa (job #298505) | Cod sursa (job #151817) | Cod sursa (job #1787621) | Cod sursa (job #1783529)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream ou("rucsac.out");
int n,gmax,g,val;
int v[10005],v1[10005];
int maax;
int maxim(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
f>>n>>gmax;
int i,j;
f>>g>>val;
v[g]=val;
maax=g;
int aux;
for(i=2;i<=n&&maax<=gmax;i++)
{
f>>g>>val;
if(g!=0)
{
for(j=maax;j>=1;j--)
{
if(v[j]!=0)
{
v1[j+g]=maxim(v[j]+val,v1[j+g]);
if(j+g>maax)
maax=j+g;
}
}
aux=val;
if(v[g]>aux)
v1[g]=v[g];
else
v1[g]=aux;
for(j=maax;j>=1;j--)
v[j]=v1[j];
}
else
{
for(j=1;j<=maax;j++)
v1[j]=v1[j]+val;
}
}
/*for(i=1;i<=n;i++)
{
f>>g>>val;
for(j=gmax;j>=0;j--)
{
if(j+g<=gmax && v[j]+val>v[j+g])
v[j+g]=v[j]+val;
}
} */
maax=-1;
for(i=0;i<=gmax;i++)
if(maax<v[i])
maax=v[i];
ou<<maax<<"\n";
return 0;
}