제출 #602242

#제출 시각아이디문제언어결과실행 시간메모리
602242uncriptedTeam Contest (JOI22_team)C++11
0 / 100
1 ms340 KiB
#include<bits/stdc++.h> #define f first #define s second #define pb push_back using namespace std; int main(){ int n; cin>>n; pair<int, pair<int,int> > p[n+1]; set<pair<int, pair<int,int> > > sd; for(int i=1; i<=n; i++){ int x,y,z; cin>>x>>y>>z; p[i]={x, {y,z}}; sd.insert(p[i]); } sort(p+1, p+n+1, greater<pair<int, pair<int,int> > >() ); int pas=-1; set<pair<int, pair<int,int> > >::iterator it=sd.end(); it--; set<pair<int,int> > vx,vy; while(true){ pair<int, pair<int,int> > px; px=*it; vx.insert({px.s.f, px.s.s}); vy.insert({px.s.s, px.s.f}); if(it==sd.begin()){ break; } it--; } for(int i=1; i<=n; i++){ if(vx.find({p[i].s.f, p[i].s.s})==vx.end()){ vx.erase({p[i].s.f, p[i].s.s}); } if(vy.find({p[i].s.s, p[i].s.f})==vy.end()){ vy.erase({p[i].s.s, p[i].s.f}); } set<pair<int, pair<int,int> > >::iterator it=sd.lower_bound({p[i].f, {0, 0}}); if(it==sd.begin()){ continue; } it--; while((*vx.rbegin()).f==(*vy.rbegin()).s && (*vx.rbegin()).s==(*vy.rbegin()).f){ vx.erase(--vx.end()); vy.erase(--vy.end()); } // cout<<"y"; if(!vx.size() || !vy.size()){ break; } // cout<<"z"; if((*vx.rbegin()).f<=p[i].s.f || (*vy.rbegin()).f<=p[i].s.s ){ continue; } pas=max(pas, p[i].f+(*vx.rbegin()).f+(*vy.rbegin()).f); } cout<<pas; }
#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...