Submission

Status:

Compilation Error

Subtask/Task Score:

Score: 0

User: Nagornz

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

Language: cpp

Time: 0.000 second

Submitted On: 2025-11-04 07:01:48

#include <bits/stdc++.h>
#define int long long

using namespace std;

int main() {
    cin.tie(NULL)->sync_with_stdio(false);

    // Input
    int n;
    cin >> n;

    // Map ชื่อ mp เก็บข้อมูลสำหรับแต่ละจุด
    map <int, int> mp;

    // รับ Input ตัวแรกมาก่อน เพื่อป้องกันปัญหาเรื่อง Indexing
    int prev;
    cin >> prev;

    // รับ Input ตัวอื่นๆ พร้อมกับเก็บข้อมูลใน Map
    for (int i = 1; i < n; i++) {
        int y;
        cin >> y;

        // ตั้ง mn, mx
        int mn = min(y, prev);
        int mx = max(prev, y);
        
        // reset prev
        prev = y;

        // เพิ่มจำนวนจุดตัด ตรง mn +1
        mp[mn]++;
        // ลดจำนวนจุดตัด ตรง mx -1
        mp[mx]--;
    }
    
    // กวาดเพื่อหาค่ามากสุด
    int ans = 0;
    int sum = 0;
    for (auto [idx, cnt] : mp) {
        // sum += ค่าการเปลี่ยนแปลงตรงจุดนี้
        sum += cnt;
        // ใช้ ans เก็บ sum ที่มากที่สุดที่เกิดขึ้นมาระหว่างการกวาด
        ans = max(ans, sum);
    }

    // Output
    cout << ans;

    return 0;
}