分析
首先,显然要排序去重,考虑最大值应该是(a_{n-1})(排序后)
那次大值只有可能出现在(a_{n-2})或者(a_nmod a_{n-1})中
当然去重后如果只有一个数那显然就是(-1)
简单证明一下,
首先这两个一定是严格小于(a_{n-1})
然后如果其中某个数对(a_{n-k},kgeq 2)取模答案一定小于(a_{n-2})
那显然只有一种情况可能大于(a_{n-2})那就是第二种情况
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
int n,a[200011];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline signed max(int a,int b){return a>b?a:b;}
signed main(){
n=iut(); for (rr int i=1;i<=n;++i) a[i]=iut();
sort(a+1,a+1+n),n=unique(a+1,a+1+n)-a-1;
if (n==1) return !printf("-1");
return !printf("%d",max(a[n-2],a[n]%a[n-1]));
}