Submission #670406

#TimeUsernameProblemLanguageResultExecution timeMemory
670406illyakrArt Exhibition (JOI18_art)C++14
100 / 100
483 ms20956 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int n; pair<int, int> t[501010]; int my() { sort(t + 1, t + 1 + n, [](pair<int, int> q, pair<int, int> w) { return q.first < w.first; }); // cout << endl; // for (int i = 1; i <= n; i++) // cout << t[i].first << " " << t[i].second << endl; // cout << endl; int sum = 0; int MX = 0; int ans = -1010101010101010101; for (int i = 1; i <= n; i++) { sum += t[i].second; ans = max(ans, sum - t[i].first + MX); ans = max(ans, t[i].second); MX = max(MX, -(sum - t[i].second) + t[i].first); // cout << i << " <<< " << -(sum-t[i].second) + t[i].first << endl; } return ans; } int brute() { int ans = 0; for (int mask = 1; mask < (1 << n); mask++) { int cur = 0; int MX = 0, MN = 1010101010101010101; for (int i = 0; i < n; i++) { if (1 & (mask >> i)) { cur += t[i + 1].second; MX = max(MX, t[i + 1].first); MN = min(MN, t[i + 1].first); } } ans = max(ans, cur - MX + MN); } return ans; } int32_t main() { cin >> n; for (int i = 1; i <= n; i++) cin >> t[i].first >> t[i].second; cout << my(); // srand(time(0)); // for (int id = 1; id <= 10000; id++) { // n = rand() % 10 + 1; // for (int i = 1; i <= n; i++) { // t[i].first = rand() % 10 + 1; // t[i].second = rand() % 10 + 1; // } // int f = my(); // int s = brute(); // if (f != s) { // cout << n << endl; // for (int i = 1; i <= n; i++) { // cout << t[i].first << " " << t[i].second << endl; // } // cout << endl; // cout << f << " " << s << endl; // exit(1); // } // } } /** 2 7 1 7 2 4 3 5 8 1 7 7 6 5 6 5 1 1 12 16 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...