結果
| 問題 | No.3456 Common Difference is D |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-02-28 17:55:14 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 106 ms / 2,000 ms |
| コード長 | 1,542 bytes |
| 記録 | |
| コンパイル時間 | 508 ms |
| コンパイル使用メモリ | 78,404 KB |
| 実行使用メモリ | 92,292 KB |
| 最終ジャッジ日時 | 2026-02-28 17:55:17 |
| 合計ジャッジ時間 | 3,606 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 |
ソースコード
import bisect
# # Binary Search module for list
# import sys
# from sys import stdin, exit, setrecursionlimit
# from collections import deque
# from collections import Counter
# from itertools import accumulate
# from heapq import heappop, heappush
# from atcoder.segtree import SegTree
# from sortedcontainers import SortedSet, SortedList, SortedDict
# input = stdin.readline
def main():
N, D = map(int, input().split())
A = list(map(int, input().split()))
d = {}
cnt = 0
for i in range(N):
d.setdefault(A[i], [])
d[A[i]].append(i)
for j in range(1, N-1):
if A[j]-D not in d.keys() or A[j]+D not in d.keys():
continue
cnt_i = bisect.bisect_left(d[A[j]-D], j)
cnt_k = len(d[A[j]+D])-bisect.bisect_left(d[A[j]+D], j)
cnt += cnt_i*cnt_k
print(cnt)
# =====================================
# mylib
# =====================================
def get_primenumbers(mx):
"""
エラトステネスの篩
引数mxまでの素数をリストで返す
:param mx: 探索範囲の最大値
"""
prime_l = [True for _ in range(mx+1)]
prime_l[0] = False
prime_l[1] = False
for i in range(4, mx+1, 2):
prime_l[i] = False
i = 3
while i**2<mx:
if not prime_l[i]:
i+=2
continue
for j in range(i**2, mx+1, i):
prime_l[j] = False
i+=2
prime = [2]
for i in range(3, mx+1, 2):
if prime_l[i]:
prime.append(i)
return prime
main()