Cod sursa(job #609531)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 21 august 2011 23:09:49
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>
#define N 5001
int g[N],c[N],s[2*N],s1[2*N],m,n,i,j,r[2*N],t,r1[2*N];
int main()
{freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
       scanf("%d%d",&g[i],&c[i]);
s[g[1]]=c[1],r[g[1]]=1;
for(i=2;i<=n;i++)
       {for(j=1;j<=m;j++)
               s1[j]=s[j],r1[j]=r[j];
       if(s1[g[i]]<c[i])
               s[g[i]]=c[i],r[g[i]]=i;
       for(j=1;j<=m-g[i];j++)
       if(s1[j+g[i]]<s1[j]+c[i])
               s[j+g[i]]=s1[j]+c[i],r[j+g[i]]=r1[j]+i;}
t=s[1];
for(i=2;i<=m;i++)
if(t<s[i])
       t=s[i];     
printf("%ld",t);
return 0;}