Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: SnowAveNode

Problemset: จุดตัดบนกราฟ

Language: cpp

Time: 0.026 second

Submitted On: 2026-03-01 11:00:07

#include <bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n; cin >> n;

    vector<long long> p(n);
    for(int i = 0; i < n; i++) cin >> p[i];

    vector<pair<long long,int>> ev;

    for(int i = 0; i < n-1; i++){
        long long lo = min(p[i], p[i+1]);
        long long hi = max(p[i], p[i+1]);

        ev.push_back({lo, +1});
        ev.push_back({hi, -1});
    }

    sort(ev.begin(), ev.end());

    int ans = 0, cur = 0;

    for(int i = 0; i < (int)ev.size(); ){
        long long y = ev[i].first;

        while(i < (int)ev.size() && ev[i].first == y && ev[i].second == +1){
            cur++;
            i++;
        }

        ans = max(ans, cur);

        while(i < (int)ev.size() && ev[i].first == y && ev[i].second == -1){
            cur--;
            i++;
        }
    }

    cout << ans;
}