Cod sursa(job #1978225)

Utilizator CriistinaMicula Cristina Criistina Data 7 mai 2017 10:05:23
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#define Nmax 5001

using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");

int n, G, w[Nmax], p[Nmax],sol, pr[Nmax][Nmax],l;

int main()
{
    f>>n>>G;
    for(int i=1;i<=n;i++)
    {
        f>>w[i]>>p[i];
        l+=w[i];
        pr[w[i]][i]=p[i];
        pr[l][i]=pr[l-w[i]][i-1]+p[i];
        if(l<=G)
            sol=max(sol, pr[l][i]);
        if(w[i]<=G)
            sol=max(sol, pr[w[i]][i]);
    }
    for(int i=1;i<=n;i++)
    {
        for(int k=w[i];k<=G;k++)
        {
            for(int j=1;j<i;j++)
            {
                if(pr[k-w[i]][j]!=0)
                    pr[k][i]=max(pr[k][i], pr[k-w[i]][j]+p[i]);
            }
            sol=max(sol, pr[k][i]);
        }
    }
    g<<sol;
}