結果
| 問題 |
No.871 かえるのうた
|
| コンテスト | |
| ユーザー |
学ぶマン
|
| 提出日時 | 2025-03-29 12:27:32 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 212 ms / 2,000 ms |
| コード長 | 1,690 bytes |
| コンパイル時間 | 280 ms |
| コンパイル使用メモリ | 82,584 KB |
| 実行使用メモリ | 96,952 KB |
| 最終ジャッジ日時 | 2025-03-29 12:27:39 |
| 合計ジャッジ時間 | 6,022 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 49 |
ソースコード
import sys, math
sys.setrecursionlimit(10**8)
sys.set_int_max_str_digits(0)
INF = 10**18
MOD = 998244353
from bisect import bisect_left, bisect_right
from collections import deque, defaultdict, Counter
from itertools import product, combinations, permutations, groupby, accumulate
from heapq import heapify, heappop, heappush
def I(): return sys.stdin.readline().rstrip()
def II(): return int(sys.stdin.readline().rstrip())
def IS(): return sys.stdin.readline().rstrip().split()
def MII(): return map(int, sys.stdin.readline().rstrip().split())
def LI(): return list(sys.stdin.readline().rstrip())
def TII(): return tuple(map(int, sys.stdin.readline().rstrip().split()))
def LII(): return list(map(int, sys.stdin.readline().rstrip().split()))
def LSI(): return list(map(str, sys.stdin.readline().rstrip().split()))
def GMI(): return list(map(lambda x: int(x) - 1, sys.stdin.readline().rstrip().split()))
def kiriage(a, b): return (a+b-1)//b
N, K = MII()
X = LII()
A = LII()
done = [False] * N
que = deque()
que.append(K - 1)
done[K - 1] = True
while que:
idx = que.popleft()
pos = X[idx]
# 座標が pos - A[idx] 以上の最小の点はどこか?
cur = bisect_left(X, pos - A[idx])
# left から右に向かって、done が True になるまでチェックする
while True:
if done[cur]:
break
done[cur] = True
que.append(cur)
cur += 1
# 座標が pos + A[idx] 以下の最大の点はどこか?
cur = bisect_right(X, pos + A[idx]) - 1
while True:
if done[cur]:
break
done[cur] = True
que.append(cur)
cur -= 1
ans = done.count(True)
print(ans)
学ぶマン