Submission
Status:
[PP-SS][SSSSS][SSSSSSSSSS]
Subtask/Task Score:
{0/20}{0/30}{0/50}
Score: 0
User: Brabra475
Problemset: ห้องสมุดเมือง 3M
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-10 20:59:30
/*#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long n;
cin>>n;
vector<pair<long long,long long>> book;
vector<long long> freq;
long long total=0;
for(long long i =0;i<n;i++){
long long a,b;
cin>>a>>b;
book.push_back({a,b});
total+=b-a;
}
sort(book.begin(),book.end());
for(long long i =0;i<n;i++){
long long a=book[i].first;
long long b=book[i].second;
freq.push_back(b-a);
}
long long mid;
if (total == 1) {
mid = 0;
} else {
mid = (total / 2) - 1;
}
long long prefix=0;
long long reprefix;
for(long long i =0;i<n;i++){
reprefix=prefix;
prefix+=freq[i];
if(mid<=prefix){
long long a = book[i].first;
cout<<a+(mid-reprefix);
return 0;
}
}
}*/
// 0 10
// 5 15
// 10 20
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<long long> X(n), Y(n);
long long K = 0;
for(int i = 0; i < n; i++){
cin >> X[i] >> Y[i];
K += Y[i] - X[i];
}
long long target = K / 2; // floor(K/2)
// Binary search
long long lo = 0, hi = 20000000;
while(lo < hi){
long long mid = (lo + hi) / 2;
// count หนังสือที่ตัวอักษร <= mid
long long cnt = 0;
for(int i = 0; i < n; i++){
if(X[i] <= mid)
cnt += min(Y[i], mid+1) - X[i];
}
if(cnt >= target) hi = mid;
else lo = mid + 1;
}
cout << lo << "\n";
}