Cod sursa(job #2867961)

Utilizator kontexVeres Norbert kontex Data 10 martie 2022 17:32:12
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <list>

using namespace std;
ifstream be("rucsac.in");
ofstream ki("rucsac.out");

int const nMax = 100001;
int n,g;
int w[nMax],p[nMax];
int aktualis[nMax],elozo[nMax];

void masolas()
{
    for(int i=0;i<=g;i++)
    {
       elozo[i] = aktualis[i];
    }
}
void rucsac()
{
    int index;
    for(int i=0;i<=g;i++)
    {
        elozo[i] = 0;
        aktualis[i] = 0;
    }
    elozo[w[1]] = p[1];
    aktualis[w[1]] = p[1];
    for(int i=2;i<=n;i++)
    {
        for(int j=0;j<=g;j++)
        {
            if(elozo[j]!=0 || j == 0)
            {
                index = w[i] + j;
                if(index <= g)
                {
                    if(elozo[index] < p[i] + elozo[j])
                    {
                        aktualis[index] = p[i] + elozo[j];
                    }
                }
            }
        }
        masolas();
    }
}
int main()
{
    be>>n>>g;
    int a,b;
    for(int i=1;i<=n;i++)
    {
        be>>w[i]>>p[i];
    }
    rucsac();
    int maxi = 0;
    for(int i=1;i<=g;i++)
    {
        if(maxi<aktualis[i])
            maxi = aktualis[i];
    }
    cout<<maxi<<endl;
    ki<<maxi<<endl;
}