#P12545. [UOI 2025] Partitioning into Three

    ID: 14109 远端评测题 500ms 256MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>2025Special JudgeUOI(乌克兰)

[UOI 2025] Partitioning into Three

题目描述

有 nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n 排成一个环形。环形顺序中相邻的数字为 a1a_1 和 a2a_2,a2a_2 和 a3a_3,…\ldots,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) —— 环形排列的数字。

输出格式

第一行输出一个整数 —— 最优划分下各组数字之和的最大值与最小值之差。

第二行输出三个整数 xx, yy, zz (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。

评分标准

  • (22 分):n=3n = 3;
  • (44 分):对于所有 1≤i≤n1 \le i \le n,ai≤1a_i \le 1;
  • (1313 分):存在一种划分使得所求差值为 00;
  • (88 分):n≤100n \le 100;
  • (99 分):n≤2000n \le 2000;
  • (1313 分):n≤5000n \le 5000;
  • (2828 分):n≤105n \le 10^5;
  • (2323 分):无额外限制。

翻译由 DeepSeek V3 完成