atcoder#ARC150F. [ARC150F] Constant Sum Subsequence

[ARC150F] Constant Sum Subsequence

配点 : 10001000

問題文

長さが N2N^2 の正整数列 A=(A1, A2, , AN2)A=(A_1,\ A_2,\ \dots,\ A_{N^2}) と正整数 SS があります。この正整数列については正整数 i (1iN2N)i\ (1\leq i \leq N^2-N) に対し Ai=Ai+NA_i=A_{i+N} が成り立ち、A1, A2, , ANA_1,\ A_2,\ \dots,\ A_N のみが入力で与えられます。

総和が SS であるような任意の正整数列 BB が正整数列 (A1, A2, , AL)(A_1,\ A_2,\ \dots,\ A_L) の(連続とは限らない)部分列となるような最小の整数 LL を求めてください。

この問題の制約のもとでそのような LL11 つ以上存在することが示せます。

制約

  • 1N1.5×1061 \leq N \leq 1.5 \times 10^6
  • 1Smin(N,2×105)1 \leq S \leq \min(N,2 \times 10^5)
  • 1AiS1 \leq A_i \leq S
  • 任意の正整数 x (1xS)x\ (1\leq x \leq S) について、(A1, A2, , AN)(A_1,\ A_2,\ \dots,\ A_N)xx11 つ以上含む
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

NN SS

A1A_1 A2A_2 \dots ANA_N

出力

答えを出力してください。

6 4
1 1 2 1 4 3
9

BB として考えるべきなのは $B=(1,\ 1,\ 1,\ 1),\ (1,\ 1,\ 2),\ (1,\ 2,\ 1),\ (1,\ 3),\ (2,\ 1,\ 1),\ (2,\ 2),\ (3,\ 1),\ (4)$ です。

例えば L=8L=8 とすると B=(2, 2)B=(2,\ 2) は $(A_1,A_2,\ \dots,\ A_8)=(1,\ 1,\ 2,\ 1,\ 4,\ 3,\ 1,\ 1)$ の部分列となりません。

一方で L=9L=9 とするとすべての BB が $(A_1,A_2,\ \dots,\ A_9)=(1,\ 1,\ 2,\ 1,\ 4,\ 3,\ 1,\ 1,\ 2)$ の部分列となります。

14 5
1 1 1 2 3 1 2 4 5 1 1 2 3 1
11
19 10
1 6 2 7 4 8 5 9 1 10 4 1 3 1 3 2 2 2 1
39