結果
| 問題 |
No.1079 まお
|
| コンテスト | |
| ユーザー |
maspy
|
| 提出日時 | 2020-05-15 06:43:05 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 856 bytes |
| コンパイル時間 | 194 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 47,756 KB |
| 最終ジャッジ日時 | 2024-10-01 22:42:57 |
| 合計ジャッジ時間 | 8,935 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 17 WA * 13 |
ソースコード
import sys
from collections import defaultdict
from heapq import heappop, heappush
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
N, K, *A = map(int, read().split())
def add(i):
x = A[i]
heappush(q, x)
counter[x] += 1
index_sum[x] += i
def remove(i):
x = A[i]
counter[x] -= 1
index_sum[x] -= i
# 最小元がqに存在することを保証
while q and counter[q[0]] == 0:
heappop(q)
q = []
counter = defaultdict(int)
index_sum = defaultdict(int)
# 左端 L を固定
# 極大な[L,R]を求める
answer = 0
L = R = -1
for L in range(N):
while R < N - 1:
x = A[R + 1]
if q and q[0] == x:
break
R += 1
add(R)
answer += index_sum[K - A[L]] - (L - 1) * counter[K - A[L]]
remove(L)
print(answer)
maspy