AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。
出典:
AtCoder Beginner Contest 166 E – This Message Will Self-Destruct in 5s
事前操作によって特徴を示す数値を作成しておき、全通り調べなくても良くする問題。
ところで、そろそろこの問題のタイトルの元ネタが分からない人も多くなってきたんじゃないだろうか……40代以上の人には「スパイ大作戦」でおなじみ、「ミッション・インポッシブル」である。死して屍拾う者なし(違
def main():
N = int(input())
A = list(map(int, input().split()))
add = dict()
sub = dict()
for n, h in enumerate(A, start=1):
if n+h not in add:
add[n+h] = 0
add[n+h] += 1
if n-h not in sub:
sub[n-h] = 0
sub[n-h] += 1
result = 0
for key, value in add.items():
if key in sub:
result += value * sub[key]
print(result)
main()
関連