Submission #713932

#TimeUsernameProblemLanguageResultExecution timeMemory
713932scottchouTeam Contest (JOI22_team)C++17
100 / 100
371 ms25584 KiB
#include<bits/stdc++.h> using namespace std; int const N = 150005; struct Person{ int x, y, z; }a[N]; map<int, vector<Person> > mp; int main(){ int n; cin >> n; for(int i = 0; i < n; i++){ cin >> a[i].x >> a[i].y >> a[i].z; mp[a[i].x].push_back(a[i]); } int ans = -1; set<pair<int, int> > s; int maxy = -1, maxz = -1; for(auto &i : mp){ for(auto &j : i.second){ if(maxy > j.y && maxz > j.z){ ans = max(ans, maxy + maxz + j.x); } } for(auto & j : i.second){ auto p = s.lower_bound({j.y, j.z}); if(p != s.begin() && prev(p)->second > j.z){ maxy = max(maxy, j.y); maxz = max(maxz, prev(p)->second); }else{ while(p != s.end() && j.z > p->second){ maxy = max(maxy, p->first); maxz = max(maxz, j.z); auto tmp = p; p++; s.erase(tmp); } s.insert({j.y, j.z}); } } } cout << ans << '\n'; }
#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...