Submission #787641

#TimeUsernameProblemLanguageResultExecution timeMemory
787641That_SalamanderArt Exhibition (JOI18_art)C++17
100 / 100
309 ms63948 KiB
#include <bits/stdc++.h> #define int long long #define FOR(var,bound) for(int var = 0; var < bound; var++) #define FORB(var,lb,ub) for (int var = lb; var < ub; var++) #define FORR(var,bound) for(int var = bound-1; var >= 0; var--) using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vector<int>> vvi; typedef pair<int, int> pii; int n; pii art[500000]; int prefixValue[500005], adjustedValue[500005], prefixAdjusted[500005]; int getValue(int l, int r) { int s = prefixValue[r+1] - prefixValue[l]; return s - (art[r].first - art[l].first); } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; FOR(i, n) { cin >> art[i].first >> art[i].second; } sort(art, art + n); prefixValue[0] = 0; FOR(i, n) { prefixValue[i+1] = prefixValue[i] + art[i].second; } prefixAdjusted[0] = 0; set<pii> bruh; FOR (i, n) { if (i == 0) { adjustedValue[i] = art[i].second; } else { adjustedValue[i] = art[i].second - (art[i].first - art[i-1].first); } prefixAdjusted[i+1] = prefixAdjusted[i] + adjustedValue[i]; bruh.insert({prefixAdjusted[i+1], i}); } int res = 0; FOR(i, n) { auto mpos = *(--bruh.end()); res = max(res, getValue(i, mpos.second)); bruh.erase({prefixAdjusted[i+1], i}); } cout << res << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...