結果
| 問題 |
No.2036 Max Middle
|
| コンテスト | |
| ユーザー |
mkawa2
|
| 提出日時 | 2022-08-12 21:58:34 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,706 bytes |
| コンパイル時間 | 185 ms |
| コンパイル使用メモリ | 82,320 KB |
| 実行使用メモリ | 100,736 KB |
| 最終ジャッジ日時 | 2024-09-23 02:26:07 |
| 合計ジャッジ時間 | 4,450 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 4 TLE * 1 -- * 12 |
ソースコード
import sys
# sys.setrecursionlimit(200005)
int1 = lambda x: int(x)-1
pDB = lambda *x: print(*x, end="\n", file=sys.stderr)
p2D = lambda x: print(*x, sep="\n", end="\n\n", file=sys.stderr)
def II(): return int(sys.stdin.readline())
def LI(): return list(map(int, sys.stdin.readline().split()))
def LLI(rows_number): return [LI() for _ in range(rows_number)]
def LI1(): return list(map(int1, sys.stdin.readline().split()))
def LLI1(rows_number): return [LI1() for _ in range(rows_number)]
def SI(): return sys.stdin.readline().rstrip()
dij = [(0, 1), (-1, 0), (0, -1), (1, 0)]
# dij = [(0, 1), (-1, 0), (0, -1), (1, 0), (1, 1), (1, -1), (-1, 1), (-1, -1)]
inf = (1 << 63)-1
# inf = (1 << 31)-1
# md = 10**9+7
md = 998244353
from random import randrange
from heapq import *
def left(aa):
while 1:
for i in range(n-2):
if aa[i] < aa[i+1] and aa[i+1] > aa[i+2]:
aa[i+1] = min(aa[i], aa[i+2])-1
print(i, aa)
break
else:
break
def mx(aa):
hp = []
ans = 0
for i, a in enumerate(aa):
if i == 0 or i == n-1: continue
if aa[i-1] < a and a > aa[i+1]:
heappush(hp, (-a, i))
while hp:
a, i = heappop(hp)
if aa[i] != -a: continue
ans += 1
aa[i] = min(aa[i-1], aa[i+1])-1
if i-2 >= 0 and aa[i-2] < aa[i-1]: heappush(hp, (-aa[i-1], i-1))
if i+2 < n and aa[i+1] > aa[i+2]: heappush(hp, (-aa[i+1], i+1))
# print(i,aa)
return ans
n = II()
aa = LI()
# aa=[randrange(1,50) for _ in range(n)]
# for i in range(n-1):
# if aa[i]==aa[i+1]:
# aa[i+1]+=1
# print(aa)
# left(aa[:])
# print()
ans = mx(aa[:])
print(ans)
mkawa2