#P13631. [NWRRC 2021] Day Streak

    ID: 13644 远端评测题 4000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>线段树2021Special JudgeICPC双指针 two-pointerNWRRC

[NWRRC 2021] Day Streak

Description

最近,著名的竞赛编程网站 Deltaforces 在用户资料中增加了许多新的可视化信息。特别地,新增了“最大连续天数”——即连续若干天每天至少解决一道题的最大天数。你觉得你资料中的最大连续天数并不能准确反映你的训练努力。因此,你产生了一个想法——如果你可以更改资料中的时区,是否能提升你的最大连续天数?

我们将这个设定形式化如下。假设你总共解决了 nn 道题,第 ii 道题是在时间 aia_i 被解决的。共有 mm 个时区,编号从 00m1m-1。默认时区为 00。如果你选择将时区更改为 tt,那么所有题目的时间戳都会增加 tt:即第 ii 道题的时间变为 ai+ta_i + t,对所有 ii 都成立。

在时间 xx 解决的问题被认为是在第 xm\lfloor \frac{x}{m} \rfloor 天解决的。这里 v\lfloor v \rfloor 表示不超过 vv 的最大整数。

为了展示最大连续天数,Deltaforces 会找到一组 llrr,使得你在第 l,l+1,,rl, l+1, \ldots, r 天中每天至少解决了一道题,并且 rl+1r-l+1 尽可能大。此时你的最大连续天数就是 rl+1r-l+1

请你通过选择一个合适的时区,使你的最大连续天数最大,并输出最大连续天数以及对应的时区。

Input Format

每个测试点包含多组测试数据。第一行包含测试用例数 tt1t21051 \le t \le 2 \cdot 10^5)。接下来是每组测试数据的描述。

每组测试数据的第一行包含两个整数 nnmm,分别表示你解决的问题数和时区数(1n21051 \le n \le 2 \cdot 10^51m1091 \le m \le 10^9)。第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,表示你解决每道题的时间戳,且时间戳各不相同,按时间递增排列(0a1<a2<<an1090 \le a_1 < a_2 < \dotsb < a_n \le 10^9)。

保证所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

Output Format

对于每组测试数据,输出两个整数 sstt,分别表示最大连续天数和实现该天数的任意一个时区(1sn1 \le s \le n0t<m0 \le t < m)。

5
4 10
0 3 8 24
2 10
32 35
10 1
0 1 3 4 5 6 7 10 11 12
10 24
0 1 3 4 5 6 7 10 11 12
8 24
26 71 101 147 181 201 244 268
3 2
2 5
5 0
2 12
4 15

Hint

在第一个样例测试中,当你选择时区 22 时,你的题目时间戳变为 225510102626。这意味着这些题目分别被认为是在第 00001122 天解决的,也就是一个 33 天的连续天数。时区 334455 也能得到相同的答案。

在第二个样例测试中,选择时区 55 后,你的题目时间戳变为 37374040,对应第 33 天和第 44 天。时区 6677 也可以。

在第三个样例测试中,只有一个时区,你的最大连续天数就是 55

在第四个样例测试中,你在很短的时间内解决了很多题,但最大连续天数也只能是 22

由 ChatGPT 4.1 翻译