暴力可过
查看原帖
暴力可过
87318
猫猬兽楼主2021/11/3 21:47

暴力不仅可过,还跑在1s以内

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,m,i,j,x[100001],y[100001],p,q,k,a[101],b,c,d,z[101];
int main()
{
	scanf("%lld",&n);
	for(i=1;i<=n;i=i+1)scanf("%lld%lld",&x[i],&y[i]);
	scanf("%lld",&m);
	for(i=1;i<=m;i=i+1)
	{
		scanf("%lld%lld%lld",&p,&q,&k);
		for(j=1;j<=k;j=j+1){a[j]=-1;z[j]=0;}
		for(j=1;j<=n;j=j+1)
		{
			c=(x[j]-p)*(x[j]-p)+(y[j]-q)*(y[j]-q);
			if(c>a[k])
			{
				d=0;
				for(b=k-1;b>=1;b=b-1)if(c<=a[b]){d=b;break;}
				for(b=k;b>d+1;b=b-1){a[b]=a[b-1];z[b]=z[b-1];}
				a[d+1]=c;z[d+1]=j;
			}
		}
		printf("%lld\n",z[k]);
	}
	return 0;
}
2021/11/3 21:47
加载中...