Cod sursa(job #949564)
| Utilizator | Data | 14 mai 2013 10:44:04 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <cstdio>
using namespace std;
int n,pmax,p[5001],G,mx,i,s[10001],g[5001],j;
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&G);
for (i=1; i<=n; i++)
scanf("%d%d",&g[i],&p[i]);
for (i=1; i<=G; i++) s[i]=-1;
for (i=1; i<=n; i++)
for (j=G; j>=0; j--)
if (j+g[i]<=G && s[j]!=-1)
if (s[j+g[i]]<s[j]+p[i]) s[j+g[i]]=s[j]+p[i];
mx=s[i];
for (i=1; i<=G; i++)
if (s[i]>mx) mx=s[i];
printf("%d",mx);
return 0;
}
