help!
查看原帖
help!
1390444
This_is_my_choice楼主2024/10/17 23:16
#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

2024/10/17 23:16
加载中...