結果
| 問題 |
No.1188 レベルX門松列
|
| コンテスト | |
| ユーザー |
双六
|
| 提出日時 | 2020-08-26 06:48:18 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 424 ms / 2,000 ms |
| コード長 | 1,030 bytes |
| コンパイル時間 | 241 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 94,592 KB |
| 最終ジャッジ日時 | 2024-11-06 19:25:31 |
| 合計ジャッジ時間 | 6,824 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
import sys; input = sys.stdin.buffer.readline
sys.setrecursionlimit(10**7)
from collections import defaultdict
con = 10 ** 9 + 7; INF = float("inf")
import bisect
def getlist():
return list(map(int, input().split()))
def LIS(N, A):
DP = [INF] * N
L = [None] * N
for i in range(N):
x = bisect.bisect_left(DP, A[i])
DP[x] = A[i]
L[i] = bisect.bisect_left(DP, INF)
return L
def LISrev(N, A):
DP = [INF] * N
L = [None] * N
for i in range(N):
x = bisect.bisect_left(DP, -A[i])
DP[x] = -A[i]
L[i] = bisect.bisect_left(DP, INF)
return L
#処理内容
def main():
N = int(input())
A = getlist()
leftup = LIS(N, A)
rightup = LIS(N, A[::-1])
rightup = rightup[::-1]
# print(leftup)
# print(rightup)
leftdown = LISrev(N, A)
rightdown = LISrev(N, A[::-1])
rightdown = rightdown[::-1]
# print(leftdown)
# print(rightdown)
ans = 0
for i in range(N):
ans = max(ans, min(leftup[i], rightup[i]) - 1)
ans = max(ans, min(leftdown[i], rightdown[i]) - 1)
print(ans)
if __name__ == '__main__':
main()
双六