Submission
Status:
[PP-SS][SSSSS][SSSSSSSSSS]
Score: 0
User: Jibhong
Problemset: ห้องสมุดเมือง 3M
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-22 18:47:59
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
typedef pair<int, bool> pib;
vector<pib> mem;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
int md = 0;
for (int i = 0; i < n; ++i) {
int u, v;
cin >> u >> v;
md += v - u;
mem.emplace_back(u, 1);
mem.emplace_back(v, 0);
}
md /= 2;
sort(mem.begin(), mem.end(), [](const pib &a, const pib &b) {
return a.F == b.F ? a.S > b.S : a.F < b.F;
});
int last = 0;
int now = 0;
int cnt = 0;
int idx = 0;
int foundIdx = -1;
bool iFoundIt = false;
for (int i = 0; i < mem.size(); ++i) {
auto e = mem[i];
if (last == e.F) {
cnt += e.S ? 1 : -1;
continue;
}
idx += cnt * (e.F - last);
if (idx >= md) {
foundIdx = i;
iFoundIt = true;
break;
}
last = e.F;
cnt += e.S ? 1 : -1;
}
if (!iFoundIt || foundIdx == -1 || foundIdx >= mem.size()) {
cout << "Error: No valid index found\n";
return 1;
}
if (cnt == 0) {
cout << mem[foundIdx].F - 1;
} else {
cout << mem[foundIdx].F - (idx - md) / cnt - 1;
}
return 0;
}