求调RE
查看原帖
求调RE
413777
npqenqpve楼主2022/11/7 11:20
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[5005];
map<int,int>mp;
signed main() 
{
	cin>>n;srand(time(0));
	for(int i=1;i<=n;i++) cin>>a[i];
	int _=200;
	while(_--)
	{
		int x,y;x=rand()*rand()%n+1,y=rand()*rand()%n+1;
		while(x==y) y=rand()%n+1;
		for(int i=1;i*i<=abs(a[x]-a[y]);i++)
		{
			if(abs(a[x]-a[y])%i) continue;
			if(i>2)
			{
				for(int j=1;j<=n;j++)
				{
//					if(i==0) while(1) puts("-1");
					mp[a[j]%i]++;
					if(mp[a[j]%i]*2>n) return cout<<i<<"\n",0;
				}
				mp.clear();
			}
			if(abs(a[x]-a[y])>2*i)
			{
				for(int j=1;j<=n;j++)
				{
					mp[a[j]%(abs(a[x]-a[y])/i)]++;
					if(mp[a[j]%(abs(a[x]-a[y])/i)]*2>n) return cout<<(abs(a[x]-a[y])/i)<<"\n",0;
				}
				mp.clear();
			}
		}
	}
	puts("-1");
}

RT,删除所有 map 相关操作后不会 RE,不懂了

2022/11/7 11:20
加载中...