제출 #713932

#제출 시각아이디문제언어결과실행 시간메모리
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...