結果
問題 |
No.2029 Swap Min Max Min
|
ユーザー |
![]() |
提出日時 | 2022-08-07 02:22:41 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 427 ms / 2,000 ms |
コード長 | 811 bytes |
コンパイル時間 | 361 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 40,996 KB |
最終ジャッジ日時 | 2024-09-16 20:38:33 |
合計ジャッジ時間 | 10,561 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 |
ソースコード
import sys input = sys.stdin.readline N=int(input()) A=list(map(int,input().split())) B=[1]*N for i in range(N): if A[i]<=N//2: B[i]=0 C=[1]*N for i in range(N): if i%2==1: C[i]=0 X=[] Y=[] for i in range(N): if B[i]==0: X.append(i) if C[i]==0: Y.append(i) AX=[0]*len(X) for i in range(len(X)): AX[i]=abs(X[i]-Y[i]) if N%2==1: print(N//2,sum(AX)) exit() C=[1]*N for i in range(N): if i%2==0: C[i]=0 Y=[] for i in range(N): if C[i]==0: Y.append(i) BX=[0]*len(X) for i in range(len(X)): BX[i]=abs(X[i]-Y[i]) for i in range(1,len(X)): AX[i]+=AX[i-1] for i in range(len(X)-2,-1,-1): BX[i]+=BX[i+1] ANS=min(AX[-1],BX[0]) for i in range(len(X)-1): ANS=min(ANS,AX[i]+BX[i+1]) print(N//2,ANS)