Submission #752038

#TimeUsernameProblemLanguageResultExecution timeMemory
752038vjudge1Art Exhibition (JOI18_art)C++17
100 / 100
296 ms30712 KiB
#include<bits/stdc++.h> #define ii pair<long long, long long> #define fi first #define se second using namespace std; const int N = 500002; const long long inf = 1e16; int n; ii a[N]; long long sum[N], r1[N], r2[N], tree[4 * N]; istream & operator >> (istream &inp, ii &m){ inp >> m.fi >> m.se; return inp; } void build(int s, int l, int r){ if(l == r){ tree[s] = r2[l]; return; } int mid = (l + r) / 2; build(2 * s, l, mid); build(2 * s + 1, mid + 1, r); tree[s] = min(tree[2 * s], tree[2 * s + 1]); } long long get(int s, int l, int r, int u, int v){ if(l > v || r < u) return inf; if(l >= u && r <= v) return tree[s]; int mid = (l + r) / 2; return min(get(2 * s, l, mid, u, v), get(2 * s + 1, mid + 1, r, u, v)); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i = 1; i <= n; ++i) cin >> a[i]; sort(a + 1, a + n + 1); for(int i = 1; i <= n; ++i){ sum[i] = sum[i - 1] + a[i].se; r1[i] = sum[i] - a[i].fi; r2[i - 1] = sum[i - 1] - a[i].fi; } build(1, 0, n - 1); long long res = 0; for(int i = 1; i <= n; ++i) res = max(res, r1[i] - get(1, 0, n - 1, 0, i - 1)); cout << res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...