码风不好,见谅!
#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;
}
感谢,大佬们。