Submission #1358727

#TimeUsernameProblemLanguageResultExecution timeMemory
1358727skuruArt Exhibition (JOI18_art)C++20
10 / 100
3 ms348 KiB
#include <bits/stdc++.h>
using namespace std;

template <typename T>
bool minimize(T& target, T candidate) {
    return target > candidate ? (target = candidate, true) : false;
}
template <typename T>
bool maximize(T& target, T candidate) {
    return target < candidate ? (target = candidate, true) : false;
}

using ll = long long;

struct Art {
    ll size, value;
} arts[505050];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;

    for (int i = 0; i < N; i++) {
        auto& [size, value] = arts[i];
        cin >> size >> value;
    }

    ll answer = 0;
    for (int bit = 1; bit < (1 << N); bit++) {
        ll sum = 0, minSize = LLONG_MAX, maxSize = 0;

        for (int i = 0; i < N; i++) {
            if (~bit & (1 << i))
                continue;
            
            sum += arts[i].value;
            minimize(minSize, arts[i].size);
            maximize(maxSize, arts[i].size);
        }

        maximize(answer, sum - (maxSize - minSize));
    }
    
    cout << answer;

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