結果

問題 No.871 かえるのうた
ユーザー 学ぶマン
提出日時 2025-03-29 12:23:39
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,643 bytes
コンパイル時間 328 ms
コンパイル使用メモリ 82,352 KB
実行使用メモリ 106,988 KB
最終ジャッジ日時 2025-03-29 12:23:47
合計ジャッジ時間 7,635 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 10 TLE * 1 -- * 38
権限があれば一括ダウンロードができます

ソースコード

diff #

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)

while que:
    idx = que.popleft()
    done[idx] = True
    pos = X[idx]

    # 座標が pos - A[idx] 以上の最小の点はどこか?
    cur = bisect_left(X, pos - A[idx])
    # left から右に向かって、done が True になるまでチェックする
    while True:
        if done[cur]:
            break
        que.append(cur)
        cur += 1
    
    # 座標が pos + A[idx] 以下の最大の点はどこか?
    cur = bisect_right(X, pos + A[idx]) - 1
    while True:
        if done[cur]:
            break
        que.append(cur)
        cur -= 1

ans = done.count(True)
print(ans)

0