結果
問題 |
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)