#include<bits/stdc++.h>
using namespace std;
struct zx{
int c,x,bh;
}a[300005];
int k[300005];
void read(int &x){
x=0;
int w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-'){
w=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+ch-48;
ch=getchar();
}
x*=w;
}
bool cmp(zx t,zx y){
return t.x<y.x;//升序排序
}
int main(){
int n;
read(n);
for(int i=1;i<=n;i++){
read(a[i].c),read(a[i].x);
a[i].bh=i;
}
sort(a+1,a+n+1,cmp);
memset(k,127/*一个极大的值*/,sizeof(k));
for(int i=2;i<=n;i++){//左侧
if(a[i].c==a[i-1].c){//国籍相同
k[a[i].bh]=min(k[a[i-1].bh]/*<-差别之处*/+a[i].x-a[i-1].x,k[a[i].bh]);
}else{//国籍不同
k[a[i].bh]=min(a[i].x-a[i-1].x,k[a[i].bh]);
}
}
for(int i=n-1;i>=1;i--){//右侧
if(a[i].c==a[i-1].c){//国籍相同
k[a[i].bh]=min(k[a[i+1].bh]/*<-差别之处*/+a[i+1].x-a[i].x,k[a[i].bh]);
}else{//国籍不同
k[a[i].bh]=min(a[i+1].x-a[i].x,k[a[i].bh]);
}
}
for(int i=1;i<=n;i++){
cout<<k[i]<<endl;
}
exit(0);//华丽结束(大家不要学我打exit(0),这是不好的习惯。)
}
每个都WA