Cod sursa(job #2121985)

Utilizator Cyg_PEduardPetcu Eduard Cyg_PEduard Data 4 februarie 2018 15:12:58
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int d[10005];
int main()
{
    int g,i,j,p,last=0,pmax=0,N,G;
    fin>>N>>G;
    for(i=1;i<=10004;i++)
        d[i]=-1;
    for(i=1;i<=N;i++)
    {
        fin>>g>>p;
        for(j=last;j>=0;j--)
        {
            if(d[j]!=-1 && j+g<=G)
               {if(d[j+g]==-1)
                  d[j+g]=d[j]+p;
                else
                   d[j+g]=max(d[j+g],d[j]+p);
                }
        }
        last=min(last+g,G);
    }
    pmax=d[G];
    for(i=G-1;i>=1;i--)
        if(d[i]>pmax)
           pmax=d[i];
    fout<<pmax;
    return 0;
}