#4479. [ABC200D] Happy Birthday! 2

[ABC200D] Happy Birthday! 2

[ABC200D] Happy Birthday! 2

题目描述

给定一个由 NN 个正整数组成的数列 A=(A1,A2,…,AN)A = (A_1, A_2, \dots, A_N)。请判断是否存在满足以下所有条件的两个数列 B=(B1,B2,…,Bx)B = (B_1, B_2, \dots, B_x) 和 C=(C1,C2,…,Cy)C = (C_1, C_2, \dots, C_y),如果存在,请输出其中一组。

  • 1≤x,y≤N1 \leq x, y \leq N。
  • 1≤B1<B2<⋯<Bx≤N1 \leq B_1 < B_2 < \dots < B_x \leq N。
  • 1≤C1<C2<⋯<Cy≤N1 \leq C_1 < C_2 < \dots < C_y \leq N。
  • BB 和 CC 是不同的数列。
    • 当 x≠yx \neq y 时,或者存在某个整数 i (1≤i≤min⁡(x,y))i\ (1 \leq i \leq \min(x, y)) 使得 Bi≠CiB_i \neq C_i 时,BB 和 CC 被认为是不同的。
  • AB1+AB2+⋯+ABxA_{B_1} + A_{B_2} + \dots + A_{B_x} 除以 200200 的余数与 AC1+AC2+⋯+ACyA_{C_1} + A_{C_2} + \dots + A_{C_y} 除以 200200 的余数相等。

输入格式

输入以以下格式从标准输入读入。

NN A1A_1 A2A_2 …\dots ANA_N

输出格式

如果不存在满足条件的数列组 B,CB, C,请输出一行 No。
如果存在,请按以下格式输出 B,CB, C:

Yes xx B1B_1 B2B_2 …\dots BxB_x yy C1C_1 C2C_2 …\dots CyC_y

判题器对大小写不敏感,均可接受。

输入输出样例 #1

输入 #1

5
180 186 189 191 218

输出 #1

Yes
1 1
2 3 4

输入输出样例 #2

输入 #2

2
123 523

输出 #2

Yes
1 1
1 2

输入输出样例 #3

输入 #3

6
2013 1012 2765 2021 508 6971

输出 #3

No

说明/提示

限制

  • 输入均为整数。
  • 2≤N≤2002 \leq N \leq 200
  • 1≤Ai≤1091 \leq A_i \leq 10^9

样例解释 1

例如,取 B=(1),C=(3,4)B=(1), C=(3,4),则 A1=180,A3+A4=380A_1=180, A_3+A_4=380,这两个数对 200200 取余的结果相同。
此外,以下输出也是正确答案之一:

yEs 4 2 3 4 5 3 1 2 5

样例解释 3

如果不存在满足条件的数列组,请输出一行 No。

由 ChatGPT 4.1 翻译