Cod sursa(job #3288445)

Utilizator AnaMateiAna Matei AnaMatei Data 22 martie 2025 12:40:25
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

const int NMAX=5000,
          GMAX=10000;

int W[NMAX+1], P[NMAX+1];
int D[2][GMAX+1];

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

int main()
{
    int N, G;
    f>>N>>G;
    for(int i=1; i<=N; i++)
        f>>W[i]>>P[i];
    int p=0, u=1;
    for(int i=1; i<=N; i++)
    {
        for(int cw=0; cw<=G; cw++)
        {
            D[u][cw]=D[p][cw]; /// Mai intai nu punem obiectul i
            /// Daca acest lucru duce la o solutie curenta mai buna,
            /// adaugam obiectul i la o solutie anterioara.
            if(W[i]<=cw)
                D[u][cw]=max(D[u][cw], D[p][cw-W[i]]+P[i]);
        }
        swap(p, u);
    }
    g<<D[p][G];
    f.close();
    g.close();
    return 0;
}