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;
}