Submission

Status:

[PPP-SSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: august

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-18 19:45:21

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

#define int long long

bool cmp(pair<int,int> &a, pair<int,int> &b) {
    if (a.first == b.first) return b.second < a.second;
    return a.first < b.first;
}

int32_t main() {
    cin.tie(0)->sync_with_stdio(0);
    int n;
    cin>> n;

    int a[n];
    for (int i=0; i<n; i++) cin>> a[i];
    
    vector<pair<int,int>> sw;
    int prvmx = -1;
    for (int i=0; i<n-1; i++) {
        int mn = min(a[i], a[i+1]);
        int mx = max(a[i], a[i+1]);

        sw.push_back({mn, 1});
        if (prvmx != mx) {
            sw.push_back({mx, -1});
            sw.push_back({mx, 1});
            prvmx = mx;
        }
        sw.push_back({mx-1, -1});
    }

    sort(sw.begin(), sw.end(), cmp);
    int cnt=0, ans=0;
    for (auto &x : sw) {
        
        cnt+=x.second;
        //cout<< x.first<< ' '<< cnt<< '\n';
        ans = max(ans, cnt);
    }
    cout<< ans;
}