atcoder#ABC258E. [ABC258E] Packing Potatoes

[ABC258E] Packing Potatoes

配点 : 500500

問題文

ベルトコンベアに載って 1010010^{100} 個のじゃがいもが 11 個ずつ流れてきます。流れてくるじゃがいもの重さは長さ NN の数列 W=(W0,,WN1)W = (W_0, \dots, W_{N-1}) で表され、i(1i10100)i \, (1 \leq i \leq 10^{100}) 番目に流れてくるじゃがいもの重さは W(i1)modNW_{(i-1) \bmod N} です。ここで、(i1)modN(i-1) \bmod Ni1i - 1NN で割った余りを表します。

高橋君は、まず空の箱を用意し、次のルールに従ってじゃがいもを順番に箱に詰めていきます。

  • じゃがいもを箱に入れる。箱に入っているじゃがいもの重さの総和が XX 以上になったら、その箱には蓋をし、新たに空の箱を用意する。

QQ 個のクエリが与えられます。i(1iQ)i \, (1 \leq i \leq Q) 番目のクエリでは、正整数 KiK_i が与えられるので、KiK_i 番目に蓋をされた箱に入っているじゃがいもの個数を求めてください。問題の制約下で、蓋をされた箱が KiK_i 個以上存在することが証明できます。

制約

  • 1N,Q2×1051 \leq N, Q \leq 2 \times 10^5
  • 1X1091 \leq X \leq 10^9
  • 1Wi109(0iN1)1 \leq W_i \leq 10^9 \, (0 \leq i \leq N - 1)
  • 1Ki1012(1iQ)1 \leq K_i \leq 10^{12} \, (1 \leq i \leq Q)
  • 入力は全て整数

入力

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

NN QQ XX

W0W_0 W1W_1 \ldots WN1W_{N-1}

K1K_1

\vdots

KQK_Q

出力

QQ 行出力せよ。i(1iQ)i \, (1 \leq i \leq Q) 行目には、ii 番目のクエリへの答えを出力せよ。

3 2 5
3 4 1
1
2
2
3

22 つの箱に蓋をするまでの高橋くんの行動は以下の通りです。

  • 空の箱を用意する。
  • 11 番目のじゃがいもを箱に入れる。箱に入っているじゃがいもの重さの総和は 33 である。
  • 22 番目のじゃがいもを箱に入れる。箱に入っているじゃがいもの重さの総和は 3+4=73 + 4 = 7 であり、X=5X = 5 以上になったのでこの箱には蓋をする。
  • 新たに空の箱を用意する。
  • 33 番目のじゃがいもを箱に入れる。箱に入っているじゃがいもの重さの総和は 11 である。
  • 44 番目のじゃがいもを箱に入れる。箱に入っているじゃがいもの重さの総和は 1+3=41 + 3 = 4 である。
  • 55 番目のじゃがいもを箱に入れる。箱に入っているじゃがいもの重さの総和は 1+3+4=81 + 3 + 4 = 8 であり、X=5X = 5 以上になったのでこの箱には蓋をする。

11 番目に蓋をされた箱には 22 つのじゃがいもが入っており、22 番目に蓋をされた箱には 33 つのじゃがいもが入っています。

10 5 20
5 8 5 9 8 7 4 4 8 2
1
1000
1000000
1000000000
1000000000000
4
5
5
5
5