Cod sursa(job #949559)

Utilizator vlady1997Vlad Bucur vlady1997 Data 14 mai 2013 10:34:03
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 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); a[0]=0;
            for (i=1; i<=n; i++) scanf("%d %d",&g[i],&p[i]);
            for (i=1; i<=s; i++) a[i]=-1;
            for (i=1; i<=n; i++)
            {
                for (j=max; j>=0; j--)
                {
                    if (a[j+g[i]]<a[j]+p[i] && a[j]!=-1) 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;
        }