Codeforces Round 857 (Div. 2) D. Buying gifts
Code
// #include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <unordered_map>
#include <map>
#include <set>
#include <cctype>
#include <list>
#include <bitset>
#define dbg(x) cout << #x << " = " << x << "\n"
using namespace std;
#define SZ(x) (int)(x.size())
void SOLVE();
int main() {SOLVE();return 0;}
using ll = long long;
const int maxn = 5e5 + 10;
const int inf = 0x3f3f3f3f;
void solve();
inline void SOLVE() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t -- ) {
solve();
}
}
multiset<int> l, r;
vector<pair<int,int>> v;
int get_near(int x) { // get_near用于获得i左侧最接近x的se值
auto it = l.lower_bound(x); // 在i左侧找到第一个>=x的se值
pair<int,int> res = {inf,inf}; // 寻找目标
if (it != l.end()) { // 如果有>=x的se值
res = min(res, {abs(*it - x), *it}); // 首先比较与x的差距,我们需要差距更小的se
}
if (it != l.begin()) { // 如果有<x的se值
it--;
res = min(res, {abs(*it - x), *it});
}
return res.second;
}
inline void solve() {
v.clear();
l.clear();
r.clear();
int n;
cin >> n;
for (int i = 0;i < n;i++) {
int a, b;
cin >> a >> b;
v.push_back({a,b});
}
sort(v.begin(), v.end()); // 按fi从小到大排序
for (int i = 0;i < n;i++) {
r.insert(v[i].second); // 预处理,将0~n-1所有的se都放进去
}
int ans = inf; // 求最小的ans
for (int i = 0;i < n;i++) { // 依次以i为边界
r.erase(r.lower_bound(v[i].second)); // 把i左边的se都从r删掉
if (i >= 1) l.insert(v[i - 1].second); // 把i左边的se都放进l
if (i == n - 1) break; // 把右边没有的情况单独放在循环外解决
int r_mx = *r.rbegin(); // i右边的se中的最大值
ans = min(ans, abs(r_mx - v[i].first));
// 由于v[i].fi在一直变大,当r_mx > v[i].fi时不需要处理
if (r_mx < v[i].first) { // 这个时候可以去i左侧看看是否有更接近v[i].fi的se
int val = get_near(v[i].first);
ans = min(ans, abs(val - v[i].first));
}
}
int val = get_near(v[n-1].first); // 此时i右边已经没有值了,得从i左边寻找最接近fi的se
ans = min(ans, abs(val - v.back().first));
cout << ans << "\n";
}
标签:
cf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App