MY Code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[300005];
int b[300005];
int n;
bool check(int m){
int L=1,R=n;
for(int i=1;i<=n;i++)b[i]=a[i];
while(L+1<R){
int M=(L+R)/2;
if(b[M]>m)R=M;
else L=M;
}
int j=0;
for(int i=1;i<=n;i++){
if(b[i]<m){
j=L;
break;
}
}
for(int i=1;i<=n;i++){
if(b[i]<m){
while(b[j]-b[i]<=m){
if(b[j]-b[i]>=m){b[j]=b[j]-b[i],b[i]=b[j];break;}
else
if(j>n){
return false;
}
else j++;
}
}
else return true;
}
return true;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
int l=0,r=1e9+1;
while(l+1<r){
int m=(l+r)/2;
if(check(m)){
l=m;
}
else{
r=m;
}
}
cout<<l<<"\n";
}