제출 #66751

#제출 시각아이디문제언어결과실행 시간메모리
66751quoriessArt Exhibition (JOI18_art)C++14
100 / 100
883 ms30440 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int lli; typedef pair<lli,lli> pii; vector<pii> arts; const int MAXN=5*1e5+5; #define boy first; #define value second; int main(){ int n; cin>>n; vector<lli> prefVal(n); lli ans=-10; for (int i = 0; i < n; i++) { pii a; cin>>a.first>>a.second; ans=max(ans,a.second); arts.push_back(a); } sort(arts.begin(),arts.end()); vector<lli> minim(n,0),minimaxi(n,0); minimaxi[0]=minim[0]=arts[0].first; vector<lli> prefmin(n,0),prefminmax(n,0); prefminmax[0]=prefmin[0]=arts[0].first; for (int i = 0; i < n; i++) { pii a=arts[i]; if(i==0)prefVal[0]=a.second; else prefVal[i]=prefVal[i-1]+a.second; if(i!=0){ minim[i]=arts[i].first-arts[i-1].first-arts[i-1].second; minimaxi[i]=max(minimaxi[i-1],minim[i]); prefmin[i]=prefmin[i-1]+minim[i]; prefminmax[i]=max(prefminmax[i-1],prefmin[i]); } } for (int i = 1; i < n; i++) { lli snc=prefVal[i]-arts[i].first+prefminmax[i]; ans=max(snc,ans); } cout <<ans<<"\n"; 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...