Submission #1256542

#TimeUsernameProblemLanguageResultExecution timeMemory
1256542motionArt Exhibition (JOI18_art)C++20
0 / 100
0 ms320 KiB
#include<bits/stdc++.h> using namespace std; int n; vector<long long> tree; void SET(int in,long long val) { in+=n; tree[in]=val; for(;in>1;in/=2) { tree[in/2]=max(tree[in],tree[in^1]); } } long long cal(int b,int e) { long long ans=0; for(b+=n,e+=n;b<e;b/=2,e/=2) { if(b&2==1) ans=max(ans,tree[b++]); if(e%2==1) ans=max(ans,tree[--e]); } return ans; } int main() { cin>>n; vector<long long> pre; vector<pair<long long,long long>> v; tree=vector<long long>(2*n,0); pre.push_back(0); for(int i=0;i<n;i++) { long long a,b; cin>>a>>b; v.push_back({a,b}); } sort(v.begin(),v.end()); for(int i=0;i<n;i++) { pre.push_back(pre[i]+v[i].second); } for(int i=0;i<n;i++) { SET(i,pre[i+1]-v[i].first); } long long ans=0; for(int i=0;i<n;i++) { ans=max(ans,cal(i+1,n)-pre[i]+v[i].first); } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...