Cod sursa(job #695194)
| Utilizator | Data | 28 februarie 2012 11:04:27 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include<stdio.h>
long n,gt,i,j,tn,t,v,g,vg[10000],vv[10000],max;
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%ld %ld",&n,>);
for(i=1;i<=n;i++)
{
scanf("%ld %ld",&v,&g);
tn=t;
for(j=1;j<=tn;j++)
if(vg[j]+g<gt)
{
if(vv[vg[j]+g]<vv[vg[j]]+v){
vv[vg[j]+g]=vv[vg[j]+g]+v;
t++;
vg[t]=vg[j]+g;
}
}
if(vv[g]<v){
t++;
vg[t]=g;
vv[g]=v;}
}
for(i=1;i<=gt;i++)
if(vv[i]>max) max=vv[i];
printf("%ld",max);
return 0;
}
