Distinct Sum (Query Version)

2 secs 1024 MB
dyktr_06's icon dyktr_06

それぞれの i(1iN)i \: (1 \leq i \leq N) について、区間を NN に向かって伸ばしていったときに、値がかぶってしまうような最小の位置を尺取り法によって求めることにより、答えが 00 になるかどうかを判定できます。

答えが 00 にならない場合は、累積和を用いることにより十分高速に答えを求めることができます。

また、答えが 00 になるかどうかの判定に Mo's Algorithm を用いる方法もあります。
結局、答えが 00 になる場合は 区間の長さ と 区間中に出現する数字の種類数 が一致しない場合なので、Mo's Algorithm により区間中に出現する数字の種類数を求めれば良いです。