#HK5203. 「UOI 2025 Stage 4 Day1」分成三组

「UOI 2025 Stage 4 Day1」分成三组

题目描述

题目译自 Ukrainian Olympiads in Informatics 2025 Stage 4 Day1 T2. Розбиття на три

在一个圆环上放置了 nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n。在圆环上相邻的数字依次为 a1a_1 与 a2a_2、a2a_2 与 a3a_3、……、an−1a_{n-1} 与 ana_n,以及 ana_n 与 a1a_1。

你需要将这些数字分成三个非空的组,使得每个数字恰好属于一个组,同一组的数字在圆环上必须是连续排列的,并且三个组的数字总和的最大值与最小值之间的差值尽可能小。

输入格式

输入的第一行包含一个整数 nn (3≤n≤106)(3 \le n \le 10^6),表示圆环上数字的数量。

第二行包含 nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai≤109)(0 \le a_i \le 10^9),表示圆环上依次排列的数字。

输出格式

输出第一行包含一个整数,表示在最优分组下,三个组的数字总和的最大值与最小值之间的差值。

输出第二行包含三个整数 x,y,zx, y, z (1≤x<y<z≤n)(1 \le x < y < z \le n),表示最优分组的划分方式,即三个组分别为 [ax,ax+1,…,ay−1][a_{x}, a_{x+1}, \ldots, a_{y-1}]、[ay,ay+1,…,az−1][a_{y}, a_{y+1}, \ldots, a_{z-1}] 和 $[a_{z}, a_{z+1}, \ldots, a_{n-1}, a_{n}, a_{1}, a_{2}, \ldots, a_{x-1}]$。

如果存在多个正确答案,可以输出任意一个。

4
1 2 3 4

1
1 3 4

7
1 6 1 0 5 3 2

0
2 3 6

8
3 1 4 1 5 9 2 6

1
3 6 8

在第三个样例中,最优分组如下:

在这种情况下,三个组的数字总和分别为 1010、1111 和 1010。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 22 n=3n = 3
22 44 ai≤1a_i \le 1(对于 1≤i≤n1 \le i \le n)
33 1313 存在一种分组使得目标差值为 00
44 88 n≤100n \le 100
55 99 n≤2000n \le 2000
66 1313 n≤5000n \le 5000
77 2828 n≤105n \le 10^5
88 2323 无附加限制