Submission
Status:
[-SSSS][SSSSS][SSSSSSSSSS]
Score: 0
User: Punnawith
Problemset: ห้องสมุดเมือง 3M
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-23 07:36:47
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N;
cin >> N;
int totalCount = 0;
vector<pair<int, int>> pos(N, {0, 0});
for(int i = 0; i < N; i++) {
cin >> pos[i].first >> pos[i].second;
totalCount += pos[i].second - pos[i].first;
}
int median = -1;
int cnt = 0;
int medianPos1 = totalCount / 2;
int medianPos2 = (totalCount + 1) / 2;
sort(pos.begin(), pos.end());
int x1 = -1, x2 = -1;
for (int i = 0; i < N; i++) {
int nRange = pos[i].second - pos[i].first;
if (cnt + nRange > medianPos1 && x1 == -1) {
x1 = pos[i].first + (medianPos1 - cnt);
}
if (cnt + nRange > medianPos2) {
x2 = pos[i].first + (medianPos2 - cnt);
break;
}
cnt += nRange;
}
if (totalCount % 2 == 0) {
median = (x1 + x2) / 2;
} else {
median = x1;
}
cout << median;
return 0;
}