結果
問題 | No.1604 Swap Sort:ONE |
ユーザー |
👑 ![]() |
提出日時 | 2021-05-10 16:22:58 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 60 ms / 2,000 ms |
コード長 | 865 bytes |
コンパイル時間 | 152 ms |
コンパイル使用メモリ | 81,944 KB |
実行使用メモリ | 75,380 KB |
最終ジャッジ日時 | 2024-07-06 07:51:33 |
合計ジャッジ時間 | 2,305 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
"""想定解 v2(数字,index)を昇順ソート転倒数を求める"""import sysfrom sys import stdindef bitadd(a,w,bit): #aにwを加えるa += 1x = awhile x <= (len(bit)-1):bit[x] += wx += x & (-1 * x)def bitsum(a,bit): #ind 0~aまでの和を求めるa += 1ret = 0x = awhile x > 0:ret += bit[x]x -= x & (-1 * x)return retN = int(stdin.readline())A = list(map(int,stdin.readline().split()))assert 2 <= N <= 3000B = [A[i] for i in range(N)]B.sort()for i in range(N):assert B[i] == i+1num_ind = [] #数字、indexを入れておくfor i in range(N):num_ind.append( (A[i] , i) )num_ind.sort()BIT = [0] * (200100)ans = 0for i in range(N):ans += i - bitsum( num_ind[i][1] , BIT )bitadd( num_ind[i][1]+1 , 1 , BIT)print (ans)