#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |