Pagini recente » Cod sursa (job #2656323) | Cod sursa (job #1151977) | Cod sursa (job #2803510) | Cod sursa (job #2345774) | Cod sursa (job #729491)
Cod sursa(job #729491)
#include<cstdio>
using namespace std;
FILE *f=fopen("rucsac.in","r");
FILE *g=fopen("rucsac.out","w");
int N,G,gr[5001],p[5001],optim[10005];
long maxim;
int main()
{
fscanf(f,"%d%d",&N,&G);
for (int i=1;i<=N;i++)
fscanf(f,"%d%d",&gr[i],&p[i]);
int Gmax=0;
for (int i=1;i<=N;i++)
for (int j=Gmax;j>=0;j--)
if ( optim[ j+gr[i] ] < optim[j]+p[i] && j+gr[i]<=G )
{ optim[ j+gr[i] ]=optim[j]+p[i] ;
if (j+gr[i]>Gmax) Gmax=j+gr[i];
if (optim[j+gr[i]]>maxim) maxim=optim[j+gr[i]];
}
fprintf(g,"%ld\n",maxim);
return 0;}