結果
問題 | No.2210 equence Squence Seuence |
ユーザー |
![]() |
提出日時 | 2023-03-08 11:08:49 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 140 ms / 2,000 ms |
コード長 | 1,566 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 82,452 KB |
実行使用メモリ | 125,404 KB |
最終ジャッジ日時 | 2024-09-18 02:28:21 |
合計ジャッジ時間 | 3,933 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
# 前の数字から見ていく# その番号を選んだら順位が何番から何番に入るのか# その番号を選ばないときに落ちる番号(first or last)がKの場合はその番号を選ばない=skip# 嫌なのが同じ番号が続くとき、その場合は最終的に次の番号が上か下か調べる必要ある# ここが二重ループになるので高速化したN, K = map(int, input().split())A = list(map(int, input().split()))# 高速化のために次が上がっているのか(+1)、下がっているのか(-1)を記録updown = [0]*(N)for i in range(N-1, -1, -1):if i == N-1:updown[i] = 1 #最後にINFがあるとみなすelse:if A[i] < A[i+1]:updown[i] = 1elif A[i] > A[i+1]:updown[i] = -1elif A[i] == A[i+1]:updown[i] = updown[i+1]last = Nfirst = 1skip = -1for i in range(0, N-1):if skip > 0:breakif A[i] < A[i+1]:if K == last:skip = ibreaklast -= 1elif A[i] > A[i+1]:if K == first:skip = ibreakfirst += 1elif A[i] == A[i+1]:if updown[i] == -1:if K == first:skip = ibreakfirst += 1elif updown[i] == 1:if K == last:skip = ibreaklast -= 1if skip == -1:skip = N-1ans = []for i in range(N):if i != skip:ans.append(A[i])print(*ans)