atcoder#ABC255E. [ABC255E] Lucky Numbers

[ABC255E] Lucky Numbers

配点 : 500500

問題文

長さ N1N-1 の整数列 S=(S1,S2,,SN1)S = (S_1, S_2, \ldots, S_{N-1}) および、「ラッキーナンバー」として MM 個の相異なる整数 X1,X2,,XMX_1, X_2, \ldots, X_M が与えられます。

長さ NN の整数列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N) であって、次の条件を満たすものを「良い数列」と呼びます。

すべての i=1,2,,N1i = 1, 2, \ldots, N-1 について、Ai+Ai+1=SiA_i + A_{i+1} = S_i が成り立つ。

良い数列 AA11 つ選ぶときの、AA の要素のうちラッキーナンバーであるものの個数(すなわち、Ai{X1,X2,,XM}A_i \in \lbrace X_1, X_2, \ldots, X_M \rbrace となる 11 以上 NN 以下の整数 ii の個数)としてあり得る最大値を求めてください。

制約

  • 2N1052 \leq N \leq 10^5
  • 1M101 \leq M \leq 10
  • 109Si109-10^9 \leq S_i \leq 10^9
  • 109Xi109-10^9 \leq X_i \leq 10^9
  • X1<X2<<XMX_1 \lt X_2 \lt \cdots \lt X_M
  • 入力はすべて整数

入力

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

NN MM

S1S_1 S2S_2 \ldots SN1S_{N-1}

X1X_1 X2X_2 \ldots XMX_M

出力

良い数列 AA11 つ選ぶときの、AA の要素のうちラッキーナンバーであるものの個数としてありうる最大値を出力せよ。

9 2
2 3 3 4 -4 -7 -4 -1
-1 5
4

良い数列 AA として A=(3,1,4,1,5,9,2,6,5)A = (3, -1, 4, -1, 5, -9, 2, -6, 5) を選ぶと、AA の要素のうちラッキーナンバーであるものは A2,A4,A5,A9A_2, A_4, A_5, A_944 個となり、これが考えられる中で最大です。

20 10
-183260318 206417795 409343217 238245886 138964265 -415224774 -499400499 -313180261 283784093 498751662 668946791 965735441 382033304 177367159 31017484 27914238 757966050 878978971 73210901
-470019195 -379631053 -287722161 -231146414 -84796739 328710269 355719851 416979387 431167199 498905398
8