解説

i<ji < jの時、jjを固定して条件を満たすAiA_iの個数を高速に数える方法を考えます。

まず、Ai+Aj0modMA_i + A_j \equiv 0 \mod Mの条件からAiMAjmodMA_i \equiv M - A_j \mod Mという条件が導き出せます。

余りごとにFenwickTreeを利用してAi<AjA_i < A_jを満たすAiA_iの個数を得ることが出来ます。

左から見ていき、対応するAiA_iの個数を数え、AjmodMA_j \mod Mの値をFenwicTreeに追加していけば良いです。

実装