Submission #1187961

#TimeUsernameProblemLanguageResultExecution timeMemory
1187961alwaus424Art Exhibition (JOI18_art)C++20
10 / 100
9 ms328 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

struct Artwork {
    long long size;
    long long value;
};

int main() {
    int n;
    cin >> n;

    vector<Artwork> artworks(n);
    for (int i = 0; i < n; ++i) {
        cin >> artworks[i].size >> artworks[i].value;
    }

    long long max_s_diff = LLONG_MIN;

    for (int i = 0; i < (1 << n); ++i) {
        vector<Artwork> chosen_artworks;
        long long current_s = 0;
        long long current_min_size = LLONG_MAX;
        long long current_max_size = LLONG_MIN;

        for (int j = 0; j < n; ++j) {
            if ((i >> j) & 1) {
                chosen_artworks.push_back(artworks[j]);
                current_s += artworks[j].value;
                current_min_size = min(current_min_size, artworks[j].size);
                current_max_size = max(current_max_size, artworks[j].size);
            }
        }

        if (chosen_artworks.size() > 0) {
            max_s_diff = max(max_s_diff, current_s - (current_max_size - current_min_size));
        }
    }

    cout << max_s_diff << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...