哦,所以这就是所谓的加强加强版?!
查看原帖
哦,所以这就是所谓的加强加强版?!
658786
STUDENT00楼主2022/10/28 21:13

我用排序 x 过了加强版,现在又用排序 x * x + y * y 过了加强加强版……

#include<bits/stdc++.h>
using namespace std;
int n;
struct Node{
    int x,y;
} node[400010];
long long mins=1e18;
bool cmp(Node a,Node b){
    return (long long)a.x*a.x+(long long)a.y*a.y<(long long)b.x*b.x+(long long)b.y*b.y;
}
long long disx(int a,int b){
	return (long long)(node[a].x-node[b].x)*(node[a].x-node[b].x);
}
long long disy(int a,int b){
	return (long long)(node[a].y-node[b].y)*(node[a].y-node[b].y);
}
long long dis(int a,int b){
	return disx(a,b)+disy(a,b);
}
int main(){
    scanf("%d",&n);
    for(register int i=1;i<=n;i++) scanf("%d%d",&node[i].x,&node[i].y);
    sort(node+1,node+n+1,cmp);
    for(register int i=1;i<n;i++){
    	for(register int j=i+1;j<=i+50&&j<=n;j++) mins=min(mins,dis(i,j));
	}
    printf("%lld",mins);
    return 0;
}
2022/10/28 21:13
加载中...