Pagini recente » Cod sursa (job #1829119) | Cod sursa (job #1124398) | Cod sursa (job #2613370) | Cod sursa (job #1857037) | Cod sursa (job #819536)
Cod sursa(job #819536)
#include<fstream>
using namespace std;
ifstream intrare("rucsac.in");
ofstream iesire("rucsac.out");
int g[10000],c[10000],uz[10000][10000],cmax[10000];
int n,gmax;
void citire()
{
int i;
intrare>>n>>gmax;
for(i=1;i<=n;i++)
intrare>>g[i]>>c[i];
}
void pd()
{
int i,G,maxim=-1,x,si=0;
for(G=1;G<=gmax;G++)
{
maxim=-1;si=0;
for(i=1;i<=n;i++)
{
if(g[i]<=G && uz[G-g[i]][i]==0)
{
x=c[i]+cmax[G-g[i]];
if(x>maxim)
{
si=i;
maxim=x;
cmax[G]=x;
}
}
}
if(si)
{
for(i=1;i<=n;i++)
uz[G][i]=uz[G-g[si]][i];
uz[G][si]=1;
}
}
}
void afisare()
{
int i,si;
int maxim;
maxim=cmax[1];
for(i=2;i<=gmax;i++)
if(cmax[i]>maxim)
{
maxim=cmax[i];
si=i;
}
iesire<<maxim<<'\n';
/*for(i=1;i<=n;i++)
if(uz[si][i]==1)
iesire<<g[i]<<' '<<c[i]<<'\n';*/
}
int main()
{
citire();
pd();
afisare();
iesire.close();
return 0;
}