题目名称 3300. [CSP JX2019PJ]次大值(民间数据)
输入输出 cspjx2019pj_sub.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 20
题目来源 Gravatar数声风笛ovo 于2019-12-18加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:6, 提交:25, 通过率:24%
Gravatar夜莺 100 0.404 s 5.92 MiB C++
Gravatarnoi加油 100 0.558 s 3.51 MiB C++
Gravatar张通 100 0.588 s 2.18 MiB C++
Gravatar数声风笛ovo 100 0.624 s 14.80 MiB C++
Gravatarzhk 100 0.644 s 13.66 MiB C++
Gravatar1020 100 0.667 s 1.08 MiB C++
Gravatarnoi加油 95 0.560 s 3.51 MiB C++
Gravatarnoi加油 95 0.588 s 3.53 MiB C++
Gravatar在大街上倒立游泳 70 1.816 s 4.81 MiB C++
Gravatar张通 65 1.218 s 4.01 MiB C++
关于 次大值(民间数据) 的近10条评论(全部评论)
问问
Gravatarrsr
2020-12-02 18:49 1楼

3300. [CSP JX2019PJ]次大值(民间数据)

★   输入文件:cspjx2019pj_sub.in   输出文件:cspjx2019pj_sub.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

数据提供者 @数声风笛

Alice 有 $n$ 个正整数,数字从 $1 \sim n$ 编号,分别为 $a_1,a_2, \dots , a_n$。  

Bob 刚学习取模运算,于是便拿这 $n$ 个数进行练习,他写下了所有$a_i \bmod a_j (1 \le i,j \le n ∧ i \neq j)$的值,其中 $\bmod$ 表示取模运算。 

Alice 想知道所有的结果中,严格次大值是多少。将取模后得到的所有值进行去重,即相同的结果数值只保留一个,剩余数中第二大的值就称为严格次大值。

【输入格式】

第一行一个正整数 $n$,表示数字个数。 第二行 $n$ 个正整数表示 $a_i$。

【输出格式】

仅一行一个整数表示答案。

若取模结果去重后剩余数字不足两个,则输出 $-1$。

【样例输入1】

4
4 5 5 6

【样例输出1】

4

【样例输入2】

4
1 1 1 1

【样例输出2】

-1

【样例输入3】

7
12 3 8 5 7 20 15

【样例输出3】

12

【部分样例解释】

【样例 1 解释】

所有取模的结果为 $\{4,4,4,1,0,5,1,0,5,2,1,1\}$。

去重后有:$\{0,1,2,4,5 \}$,结果为 $4$。

【数据规模与约定】

对于 $40\%$ 的数据,$1\le n,a_i \le 100$;

对于 $70\%$ 的数据,$1\le n \le 3000$,$1\le a_i \le 10^5$;

对于 $100\%$ 的数据,$3 \le n \le 2\times 10^5$,$1\le a_i \le 10^9$。

【来源】

CSP-J 2019 江西省重赛 Task 2.