- #include
- using namespace std;
- int n, x, len, a[100010], ans;
- set<int> s;
- set<int>::iterator asd;
- int main()
- {
- /*
- a[n-1] 是最大的
- a[n-2] 可能是次大的
- 所以次大值在a[n-2]和a[n]%a[n-1]中取得,为两者中的最大值
- */
- scanf("%d", &n);
- //set会自动从小到大排序
- for(int i=1; i<=n; ++i){
- scanf("%d", &x);
- s.insert(x);
- }
- n=int(s.size()); //获取不重复的数字个数
- asd=s.begin();
- //将数字存在a数组中
- for(int i=1; i<=n; ++i){
- a[i]=*asd; //asd 是迭代器
- asd++;
- }
- //原数只有 1 个
- if(n==1){
- printf("-1");
- }
- printf("%d", a[n]%a[n-1]);
- }
- else{ //原数至少 3 个
- ans=max(a[n]%a[n-1], a[n-2]);
- printf("%d", ans);
- }
- return 0;
- }