Submission #704524

#TimeUsernameProblemLanguageResultExecution timeMemory
704524KenIsGeniusArt Exhibition (JOI18_art)C++17
100 / 100
192 ms21764 KiB
#include <bits/stdc++.h> #define F first #define S second #define pb push_back #define all(x) (x).begin(), (x).end() #define int long long using namespace std; #ifdef LOCAL #define WOSAOJI freopen("in.txt", "r", stdin); #else #define WOSAOJI ios_base::sync_with_stdio(0), cin.tie(0); #endif #define chmax(a, b) (a) = (a) > (b) ? (a) : (b) #define chmin(a, b) (a) = (a) < (b) ? (a) : (b) const int MAXN = 5e5 + 5; int n, s; pair<int, int> a[MAXN]; int p_min[MAXN], p_max[MAXN]; int pre[MAXN]; signed main() { WOSAOJI cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i].F >> a[i].S; s += a[i].S; } sort(a + 1, a + 1 + n); int cur = s - a[n].F + a[1].F; for (int i = 1; i < n; i++) { p_min[i] = a[i + 1].F - a[i].F - a[i].S; p_min[i] += p_min[i - 1]; pre[i] = max(pre[i - 1], p_min[i]); } for (int i = n; i > 1; i--) { p_max[i] = a[i].F - a[i].S - a[i - 1].F; p_max[i] += p_max[i + 1]; } for (int i = 1; i <= n; i++) { //cout << p_min[i] << " \n"[i == n]; } for (int i = 1; i <= n; i++) { //cout << p_max[i] << " \n"[i == n]; } int ans = max(0ll, cur); for (int i = 2; i <= n + 1; i++) { chmax(ans, cur + p_max[i] + pre[i - 2]); } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...