結果
問題 |
No.2029 Swap Min Max Min
|
ユーザー |
![]() |
提出日時 | 2022-08-22 19:37:02 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 110 ms / 2,000 ms |
コード長 | 663 bytes |
コンパイル時間 | 293 ms |
コンパイル使用メモリ | 82,448 KB |
実行使用メモリ | 116,032 KB |
最終ジャッジ日時 | 2024-10-10 06:41:10 |
合計ジャッジ時間 | 5,878 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 |
ソースコード
N = int(input()) A = list(map(int, input().split())) D = [] for i in range(N): if A[i] <= N//2: D.append(i) ans = 0 if N % 2: E = list(range(1, N, 2)) for i in range(N//2): ans += abs(D[i] - E[i]) else: EL = list(range(0, N, 2)) ER = list(range(1, N, 2)) EL.reverse() Left = [0] * (N//2 + 1) Right = [0] * (N//2 + 1) cntL, cntR = 0, 0 ans = 10 ** 18 for i in range(N//2): cntL += abs(D[N//2 - i - 1] - EL[i]) cntR += abs(D[i] - ER[i]) Left[i + 1] = cntL Right[i + 1] = cntR for i in range(N//2 + 1): ans = min(ans, Left[i] + Right[N//2 - i]) print(N//2, ans)