Cod sursa(job #765533)
Utilizator | Data | 8 iulie 2012 00:28:14 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include<cstdio>
int g[5001],c[5001],s[10001],s1[10001],m,n,i,j,t;
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];
for(i=2;i<=n;i++)
{for(j=1;j<=m;j++)
s1[j]=s[j];
if(s1[g[i]]<c[i])
s[g[i]]=c[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];}
t=s[1];
for(i=2;i<=m;i++)
if(t<s[i])
t=s[i];
printf("%d",t);
return 0;}