Pagini recente » Cod sursa (job #2554154) | Cod sursa (job #53381) | Cod sursa (job #763626) | Cod sursa (job #2128922) | Cod sursa (job #729495)
Cod sursa(job #729495)
#include<cstdio>
using namespace std;
FILE *f=fopen("rucsac.in","r");
FILE *g=fopen("rucsac.out","w");
long N,G,gr[5010],p[5010],optim[10010];
long maxim;
int main()
{
fscanf(f,"%ld%ld",&N,&G);
for (int i=1;i<=N;i++)
fscanf(f,"%ld%ld",&gr[i],&p[i]);
int Gmax=0;
for (int i=1;i<=N;i++)
for (int j=Gmax;j>=0;j--)
if (j+gr[i]<=G && optim[ j+gr[i] ] < optim[j]+p[i])
{ 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;}