Cod sursa(job #947389)

Utilizator vlady1997Vlad Bucur vlady1997 Data 7 mai 2013 11:57:28
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
        #include <cstdio>
        #include <cstring>
        using namespace std;
        int a[10001], p[5001], g[5001];
        int main()
        {
            int n, s, i, j, max=0, z=0;
            freopen("rucsac.in","r",stdin);
            freopen("rucsac.out","w",stdout);
            scanf("%d%d",&n,&s); memset(a,0,sizeof(a));
            for (i=1; i<=n; i++) scanf("%d %d",&p[i],&g[i]);
            for (i=1; i<=n; i++)
            {
                for (j=max; j>=0; j--)
                {
                    if (a[j+g[i]]<a[j]+p[i])
                    {
                        a[j+g[i]]=a[j]+p[i];
                    }
                }
                max+=g[i];
            }
            for (i=1; i<=s; i++) if (a[i]>z) z=a[i];
            printf("%d",z);
            fclose(stdin);
            fclose(stdout);
            return 0;
        }