#include <bits/stdc++.h>
using namespace std;
int n;
class Node
{
public:
int x, id;
} a[500007], q[500007];
map<int, int> mp;
int su, qs, ans = INT_MAX;
int l = 1, r;
int main()
{
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i].x >> a[i].id;
if (!mp[a[i].id])
su++, mp[a[i].id] = 1;
}
mp.clear();
for (int i = 1; i <= n; i++)
{
if (!mp[a[i].id])
qs++, mp[a[i].id] = 1;
else
mp[a[i].id]++;
q[++r] = {a[i].x, a[i].id};
while (mp[q[l].id] > 1)
l++, mp[q[l].id]--;
if (qs == su)
ans = min(ans, q[r].x - q[l].x);
}
cout << ans;
// putchar('\n'), system("pause");
return 0;
}
样例实际输出:
-5
!!! 玄关!!!!!!