求助
2026-07-23 14:33:32
发布于:云南
#include <bits/stdc++.h>
using namespace std;
int n;
int l = 1;
int r = 1;
int cnt = 1;
int sum = INT_MAX;
pair<int, int>a[50050];
set<int> b;
multiset<int> c;
bool cmp(int x, int y) {
return x < y;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].first;
cin >> a[i].second;
b.insert(a[i].second);
}
int ans = b.size();
sort(a + 1, a + n + 1, cmp);
b.clear();
while (r <= n) {
if (cnt < ans) {
r++;
c.insert(a[r].second);
b.insert(a[r].second);
cnt = b.size();
} else {
sum = min(sum, a[r].first - a[l].first);
c.erase(c.find(a[l].second));
if (c.count((a[l].second)) == 0) {
b.erase((a[l].second));
}
l++;
cnt = b.size();
}
}
cout << sum << endl;
return 0;
}
这玩意错哪了??
急需

























有帮助,赞一个