Submission #1144764

#TimeUsernameProblemLanguageResultExecution timeMemory
1144764why1Art Exhibition (JOI18_art)C++20
100 / 100
263 ms24312 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pii pair<int,int> #define sz size() #define all(v) v.begin(),v.end() #define fi first #define se second const int N = 5e5; const int mod = 1e9+7; const ll INF = 1e18; const int di[] = {1, -1, 0, 0}; const int dj[] = {0, 0, 1, -1}; ll a[N+1],b[N+1],ind[N+1]; ll pref[N+1],t[4*N]; bool cmp(int i,int j){ if(a[i]==a[j]) return b[i]<b[j]; return a[i]<a[j]; } void upd(int v,int l,int r,int pos,ll x){ if(l==r){ t[v]=x; } else{ int mid=(l+r)/2; if(pos<=mid) upd(v+v,l,mid,pos,x); else upd(v+v+1,mid+1,r,pos,x); t[v]=max(t[v+v],t[v+v+1]); } } ll get(int v,int l,int r,int rl,int rr){ if(r<rl || rr<l) return -INF; if(rl<=l && r<=rr) return t[v]; int mid=(l+r)/2; return max(get(v+v,l,mid,rl,rr),get(v+v+1,mid+1,r,rl,rr)); } void solve() { int n; cin>>n; for(int i = 1; i <= n; i++){ cin>>a[i]>>b[i]; ind[i]=i; } sort(ind+1,ind+n+1,cmp); for(int i = 1; i <= n; i++){ pref[i]=pref[i-1]+b[ind[i]]; upd(1,1,n,i,pref[i]-a[ind[i]]); } ll ans=0; for(int i = 1; i <= n; i++){ ans=max(ans,get(1,1,n,i,n)-(pref[i-1]-a[ind[i]])); } cout<<ans<<"\n"; } int main() { //freopen("cowrun.in","r",stdin); //freopen("cowrun.out","w",stdout); ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t=1; //cin>>t; while(t--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...