Cod sursa(job #2130594)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 13 februarie 2018 19:25:16
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

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

int N, GMAX, S[10003], val[5003], gr[5003];
int main()
{
    f >> N >> GMAX;
    memset(S, -1, sizeof(S));
    int MAX = 0;
    S[MAX] = 0;
    for(int i = 1; i <= N; i++) f >> gr[i] >> val[i];
    for(int i = 1; i <= N; i++) {
        for(int j = MAX; j >= 0; j--) {
            if(S[j] != -1 && j + gr[i] <= GMAX && S[j] + val[i] > S[j + gr[i]])
                S[j + gr[i]] = S[j] + val[i], MAX = max(MAX, j + gr[i]);
        }
    }
    MAX = 0;
    for(int i = 1; i <= GMAX; i++)
        MAX = max(MAX, S[i]);
    g << MAX << "\n";
    f.close();
    g.close();
    return 0;
}