Submission #238658

#TimeUsernameProblemLanguageResultExecution timeMemory
238658aggu_01000101Art Exhibition (JOI18_art)C++14
100 / 100
442 ms37516 KiB
#include <bits/stdc++.h> #define int long long #define INF 1000000000000000000 #define lchild(i) (i*2 + 1) #define rchild(i) (i*2 + 2) #define mid(l, u) ((l+u)/2) #define MOD 998244353 using namespace std; const int N = 5e5 + 5; int lazy[N*4], rmq[N*4]; pair<int, int> a[N]; int build(int l, int u, int i){ lazy[i] = 0; if(l==u) return rmq[i] = a[l].first; return rmq[i] = max(build(l, mid(l, u), lchild(i)), build(mid(l, u)+1, u, rchild(i))); } int update(int l, int u, int i, int ll, int uu,int tu){ if(lazy[i]){ rmq[i]+=lazy[i]; if(l!=u){ lazy[lchild(i)] += lazy[i]; lazy[rchild(i)] += lazy[i]; } lazy[i] = 0; } if(l>=ll && u<=uu){ rmq[i]+=tu; if(l!=u){ lazy[lchild(i)]+=tu; lazy[rchild(i)]+=tu; } return rmq[i]; } if(l>uu || u<ll) return rmq[i]; return rmq[i] = max(update(l, mid(l, u), lchild(i), ll, uu, tu), update(mid(l, u)+1, u, rchild(i), ll, uu, tu)); } int query(int l, int u, int i, int ll, int uu){ if(lazy[i]){ rmq[i]+=lazy[i]; if(l!=u){ lazy[lchild(i)] += lazy[i]; lazy[rchild(i)] += lazy[i]; } lazy[i] = 0; } if(l>=ll && u<=uu) return rmq[i]; if(l>uu || u<ll) return (-INF); return max(query(l, mid(l, u), lchild(i), ll, uu), query(mid(l, u)+1, u, rchild(i), ll, uu)); } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin>>n; for(int i = 1;i<=n;i++) cin>>a[i].first>>a[i].second; sort(a+1, a+n+1); build(1, n, 0); int ans = -INF; for(int i = 1;i<=n;i++){ //cout<<i<<endl; update(1, n, 0, 1, i, a[i].second); int tempans = -a[i].first + query(1, n, 0, 1, i); //cout<<(-a[i].first)<<" "<<query(1, n, 0, 1, i)<<"\n"; ans = max(ans, tempans); } 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...