Cod sursa(job #1927276)

Utilizator misu007Pogonaru Mihai misu007 Data 15 martie 2017 00:16:04
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define MAXN 5001
#define MAXG 10001
#define Pair pair<int, int>

int n, g;
vector<Pair> costuri;
int rezultate_partiale[1][MAXG];

void read() {
    int x, y;
    cin >> n >> g;
    for (int i = 0; i < n; ++i) {
        cin >> x >> y;
        costuri.push_back(Pair(x, y));
    }
}

void solve() {
    int i;
    for (i = 0; i < n; ++i) {
        for (int G = g; G >= 1; --G) {
            if (G - costuri[i].first >= 0) {
                rezultate_partiale[0][G] =
                    max (rezultate_partiale[0][G - costuri[i].first] +
                        costuri[i].second, rezultate_partiale[0][G]);
            }
        }
    }
}

void write() {
    cout << rezultate_partiale[0][g] << endl;
}

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    read();
    solve();
    write();
    return 0;
}