結果
問題 |
No.2029 Swap Min Max Min
|
ユーザー |
![]() |
提出日時 | 2022-08-06 15:32:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 114 ms / 2,000 ms |
コード長 | 795 bytes |
コンパイル時間 | 173 ms |
コンパイル使用メモリ | 82,364 KB |
実行使用メモリ | 114,480 KB |
最終ジャッジ日時 | 2024-09-16 10:46:28 |
合計ジャッジ時間 | 5,241 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 |
ソースコード
N = int(input()) A = list(map(int, input().split())) if N & 1: NN = N // 2 idx = [i * 2 + 1 for i in range(NN)] idx1 = [] for i in range(N): if A[i] <= NN: idx1.append(i) ans = 0 for i in range(NN): ans += abs(idx[i] - idx1[i]) else: NN = N // 2 idx1 = [i * 2 + 1 for i in range(NN)] idx2 = [i * 2 for i in range(NN)] idx3 = [] for i in range(N): if A[i] <= NN: idx3.append(i) ans1 = [0] for i in range(NN): ans1.append(ans1[-1] + abs(idx3[i] - idx1[i])) ans2 = [0] for i in range(NN - 1, -1, -1): ans2.append(ans2[-1] + abs(idx3[i] - idx2[i])) ans = 1 << 60 for i in range(NN + 1): ans = min(ans, ans1[i] + ans2[NN - i]) print(NN, ans) exit()