Cod sursa(job #2645770)

Utilizator Andrei_TudorAndrei Tudor Andrei_Tudor Data 29 august 2020 15:58:38
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;
const int nmax = 10000;
int d[nmax + 5];
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int main()
{
    int n, G, i, j, last, g, p, maxp;
    cin >> n >> G;
    last = 0;
    for(i = 1; i <= n; i ++){
        cin >> g >> p;
        for(j = last; j >= 0; j --){
            if(j + g > G){
                continue;
            }
            if(d[j] != -1){
                /// Se formeaza suma greutatilor j + g
                /// d[j + g] este profitul maxim actua al sumei j + g
                if(d[j + g] < d[j] + p){
                    d[j + g] = d[j] + p;
                    if(j + g > last){
                        last = j + g;
                    }
                }
            }
        }
    }
    maxp = -1;
    for(int l = 1; l <= G; l ++){
        if(d[l] > maxp){
            maxp = d[l];
        }
    }
    cout << maxp;
    return 0;
}