結果
問題 |
No.2036 Max Middle
|
ユーザー |
![]() |
提出日時 | 2025-04-15 21:14:47 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,154 bytes |
コンパイル時間 | 165 ms |
コンパイル使用メモリ | 82,040 KB |
実行使用メモリ | 55,436 KB |
最終ジャッジ日時 | 2025-04-15 21:21:20 |
合計ジャッジ時間 | 4,293 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 4 TLE * 1 -- * 12 |
ソースコード
import sys from collections import deque def main(): N = int(sys.stdin.readline()) A = list(map(int, sys.stdin.readline().split())) if N < 3: print(0) return is_peak = [False] * N queue = deque() for j in range(1, N-1): if A[j-1] < A[j] and A[j] > A[j+1]: is_peak[j] = True queue.append(j) count = 0 while queue: j = queue.popleft() if not is_peak[j]: continue left_val = A[j-1] right_val = A[j+1] new_val = min(left_val, right_val) - 1 A[j] = new_val count += 1 is_peak[j] = False for neighbor in [j-1, j+1]: if neighbor < 1 or neighbor >= N-1: continue if A[neighbor-1] < A[neighbor] and A[neighbor] > A[neighbor+1]: if not is_peak[neighbor]: is_peak[neighbor] = True queue.append(neighbor) else: if is_peak[neighbor]: is_peak[neighbor] = False print(count) if __name__ == "__main__": main()