求助,这个二分是写假了吗?50分
查看原帖
求助,这个二分是写假了吗?50分
312780
456laji楼主2020/9/19 15:07

码风不好,见谅!

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+100;
int cow[N],n;

bool check(int x)
{
	map<int,int> vis;
	for(int i=1;i<=n;i++)
	{
		vis[cow[i]%x]++;//printf("%d \n",cow[i]%x);
		if(vis[cow[i]%x]==2) return false;	
	}
	return true;
}

int main()
{
	int L=1,R=0;;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&cow[i]),R=max(R,cow[i]);
	
	int res;
	while(L<=R)
	{
		int mid=(L+R)>>1;
		//printf("l=%d R=%d mid=%d\n",L,R,mid);
		if(!check(mid)) L=mid+1;
		else R=mid-1,res=mid;
		//printf("%d %d \n\n",L,R);
	}
	printf("%d\n",L);
	return 0;
}

感谢,大佬们。

2020/9/19 15:07
加载中...