組み合わせ(ai,aj)について、aiを固定して考えます。
すると、aiに対する相手の種類数は、i<j≤Nを満たすajの種類数だとわかります。
ai=Xを満たす複数のiがある場合は、最も小さいiについて考えれば良いです。
そのため、aを右から順に、各aiに対するajの種類数をunordered_setなどを用いて数えながら更新していけば、全てのaiについて相手の種類数がわかります。
aiの相手の種類数をunordered_mapなどで管理すれば、O(N)でこの操作を行えます。
最後に、重複を除いた全てのaiについて、種類数の和を求めると、これが答えとなります。