Submission

Status:
[PP-SS][SSSSS][SSSSSSSSSS]

Score: 0

User: mydKN

Problemset: ห้องสมุดเมือง 3M

Language: cpp

Time: 0.002 second

Submitted On: 2025-03-15 00:23:35

#include<bits/stdc++.h>

using namespace std;

using pii = pair<int, int>;

int n;
priority_queue<pii, vector<pii>, greater<pii>> pq;
vector<pii> vec;
stack<int> stk;
int sum;
vector<int> bs;

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	cin >> n;
	for(int i=0;i<n;++i){
		int st, en;
		cin >> st >> en;
		pq.emplace(st, -1);
		pq.emplace(en, 1);
	}
	while(!pq.empty()){
		auto [val, t] = pq.top();
		pq.pop();
		if(t == 1 && stk.size() == 1){
			vec.emplace_back(stk.top(), val);
			stk.pop();
			//cout << "pop\n";
		}
		else if(t == 1 && stk.size() != 1){
			stk.pop();
		}
		else if(t == -1){
			stk.emplace(val);
			//cout << "push\n";
		}
	}
	//for(auto e : vec) cout << e.first << " " << e.second << "\n";
	for(auto e : vec){
		int cnt = e.second - e.first;
		sum += cnt;
		if(!bs.empty()) bs.emplace_back(bs.back() + cnt);
		else bs.emplace_back(cnt);
	}
	sum /= 2;
	int i = 0;
	for(auto e : bs){
		//cout << e << " ";
		if(sum - e <= 0){
			break;
		}
		++i;
		sum -= e;
	}
	//cout << "\n";
	cout << vec[i].first + sum - 1;
}