ABC166 E - This Message Will Self-Destruct in 5s
問題原文
解法
条件を整理すると、
が探したいものだとわかる。
とりあえず として絶対値を消すと、
になった。
こういうのは と を別々に考えるとよくて、式変形をすると
が得られる。
これで左辺と右辺が独立に前計算できるようになった。
あとは全ての についてペアになれる がいくつあるかを数えればいい。
i = j で条件を満たすようなものはないので考えなくて大丈夫。
実装
from collections import Counter N = int(input()) A = list(map(int, input().split())) P = [i + a for i, a in enumerate(A, start=1)] Q = [j - a for j, a in enumerate(A, start=1)] ans = 0 QC = Counter(Q) for p in P: ans += QC[p] print(ans)
感想
あれ、なんか強くなってる気がする。