Cod sursa(job #2913711)

Utilizator andreibrosPeta Andrei Mathias andreibros Data 16 iulie 2022 12:54:34
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int profit[10001];
struct element
{
    int g;
    int v;
}f[5000];
int main()
{
    int n,G;
    in>>n>>G;
    for(int i=0; i<n; i++)
        in>>f[i].g>>f[i].v;
    // cazurile de baza
    profit[0]=0; //nu aleg niciun obiect
    for(int i=1; i<=G; i++)
        profit[i]=-1;
    for(int i=0; i<n; i++)
        for(int j=G; j>=f[i].g; j--)
        {
            if(profit[j-f[i].g]!=-1 && profit[j]< profit[j-f[i].g]+ f[i].v)
            {
                profit[j]= profit[j-f[i].g]+ f[i].v;
            }
        }
    int maxim=profit[1];
    for(int i=2; i<=G; i++)
    {
        if(maxim<profit[i])
            maxim= profit[i];
    }
    out<<maxim;




    return 0;
}