Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Nagornz
Problemset: จุดตัดบนกราฟ
Language: cpp
Time: 0.056 second
Submitted On: 2025-11-04 07:02:46
#include <bits/stdc++.h>
#define int long long
using namespace std;
int32_t 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;
}