結果

問題 No.2029 Swap Min Max Min
ユーザー rlangevinrlangevin
提出日時 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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 37 ms
52,872 KB
testcase_01 AC 37 ms
54,104 KB
testcase_02 AC 36 ms
52,244 KB
testcase_03 AC 91 ms
96,212 KB
testcase_04 AC 65 ms
75,472 KB
testcase_05 AC 61 ms
78,464 KB
testcase_06 AC 78 ms
97,736 KB
testcase_07 AC 91 ms
98,912 KB
testcase_08 AC 105 ms
110,384 KB
testcase_09 AC 66 ms
78,536 KB
testcase_10 AC 53 ms
70,784 KB
testcase_11 AC 73 ms
84,184 KB
testcase_12 AC 69 ms
84,684 KB
testcase_13 AC 105 ms
110,764 KB
testcase_14 AC 96 ms
113,064 KB
testcase_15 AC 108 ms
115,268 KB
testcase_16 AC 92 ms
111,764 KB
testcase_17 AC 104 ms
110,544 KB
testcase_18 AC 110 ms
115,868 KB
testcase_19 AC 91 ms
111,652 KB
testcase_20 AC 101 ms
113,192 KB
testcase_21 AC 101 ms
112,864 KB
testcase_22 AC 91 ms
111,464 KB
testcase_23 AC 98 ms
116,032 KB
testcase_24 AC 98 ms
115,792 KB
testcase_25 AC 90 ms
111,952 KB
testcase_26 AC 89 ms
111,620 KB
testcase_27 AC 36 ms
53,228 KB
testcase_28 AC 37 ms
52,764 KB
testcase_29 AC 36 ms
53,220 KB
testcase_30 AC 37 ms
52,612 KB
testcase_31 AC 37 ms
53,804 KB
testcase_32 AC 38 ms
54,360 KB
testcase_33 AC 36 ms
53,040 KB
testcase_34 AC 35 ms
52,676 KB
testcase_35 AC 37 ms
52,836 KB
testcase_36 AC 36 ms
53,108 KB
testcase_37 AC 36 ms
52,516 KB
testcase_38 AC 90 ms
108,540 KB
testcase_39 AC 90 ms
111,092 KB
testcase_40 AC 84 ms
106,504 KB
testcase_41 AC 90 ms
109,420 KB
testcase_42 AC 89 ms
109,376 KB
testcase_43 AC 87 ms
110,700 KB
testcase_44 AC 99 ms
115,588 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

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)
0