Submission #688153

#TimeUsernameProblemLanguageResultExecution timeMemory
688153Darren0724Team Contest (JOI22_team)C++17
100 / 100
219 ms19996 KiB
#include<bits/stdc++.h> using namespace std; #define x first #define y second #define pii pair<int,int> #define all(x) x.begin(),x.end() const int INF=1e9; signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n;cin>>n; vector<pair<int,pii>> v(n); for(int i=0;i<n;i++){ cin>>v[i].x>>v[i].y.x>>v[i].y.y; } sort(all(v)); vector<pii> q; set<pii> s,c,c1; int ans=-1; for(int i=0;i<n;i++){ pii t=v[i].y; if(i>0&&v[i].x>v[i-1].x){ //random_shuffle(all(q)); for(auto t:q){ auto it=c.lower_bound({t.x,0}); if(it!=c.begin()&&(*prev(it)).y>t.y){ continue; } c.insert(t); it=c.lower_bound(t); it++; while(it!=c.end()){ if(t.y>=(*it).y){ c.erase(it); it=c.lower_bound(t); it++; } else{ break; } } } for(auto t:q){ auto it=c.lower_bound({t.x,0}); int tmp=-1; if(it!=c.begin()&&(*prev(it)).y>t.y){ tmp=(*prev(it)).y; } if(tmp==-1){ continue; } //cout<<tmp<<endl; s.insert({t.x,tmp}); } for(auto t:q){ swap(t.x,t.y); auto it=c1.lower_bound({t.x,0}); if(it!=c1.begin()&&(*prev(it)).y>t.y){ continue; } c1.insert(t); it=c1.lower_bound(t); it++; while(it!=c1.end()){ if(t.y>=(*it).y){ c1.erase(it); it=c1.lower_bound(t); it++; } else{ break; } } } for(auto t:q){ swap(t.x,t.y); auto it=c1.lower_bound({t.x,0}); int tmp=-1; if(it!=c1.begin()&&(*prev(it)).y>t.y){ tmp=(*prev(it)).y; } if(tmp==-1){ continue; } s.insert({tmp,t.x}); } while(s.size()>1){ s.erase(s.begin()); } q.clear(); } q.push_back(v[i].y); auto it=s.upper_bound({t.x,INF}); if(it==s.end()||(*it).y<=t.y){ continue; } //cout<<v[i].x<<' '<<(*it).x<<' '<<(*it).y<<endl; ans=max(ans,v[i].x+(*it).x+(*it).y); } /*for(auto e:c1){ cout<<e.x<<' '<<e.y<<endl; } for(auto e:s){ cout<<e.x<<' '<<e.y<<endl; }*/ cout<<ans<<endl; return 0; } /* 5 1 4 3 3 1 2 5 5 1 4 2 4 2 3 5 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...