結果
問題 | No.1300 Sum of Inversions |
ユーザー |
![]() |
提出日時 | 2020-11-27 21:33:50 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 831 ms / 2,000 ms |
コード長 | 885 bytes |
コンパイル時間 | 602 ms |
コンパイル使用メモリ | 82,208 KB |
実行使用メモリ | 199,284 KB |
最終ジャッジ日時 | 2024-07-26 11:48:40 |
合計ジャッジ時間 | 21,267 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
def Binit(B,siz):while len(B)<siz+1:B.append(0)while len(B)>siz+1:del B[-1]for i in range(siz+1):B[i]=0B.append(siz)def Badd(B,a,x):z=awhile z<=B[-1]:B[z]+=xz+=(z&(-z))def Bsum(B,a):r=0z=awhile z>0:r+=B[z]z-=(z&(-z))return rdef Bssum(B,a,b):return Bsum(B,max(a,b))-Bsum(B,min(a,b)-1)BIT=[]BC=[]N=int(input())A=list(map(int,input().split()))Binit(BIT,N+1)Binit(BC,N+1)D=dict()B=sorted(set(A))for i in range(len(B)):D[B[i]]=i+1C=[0]*NZ=[0]*NX=0for i in range(N):C[i]=X-Bsum(BIT,D[A[i]])+(i-Bsum(BC,D[A[i]]))*A[i]X+=A[i]Z[i]=i-Bsum(BC,D[A[i]])Badd(BC,D[A[i]],1)Badd(BIT,D[A[i]],A[i])X=0P=0Binit(BIT,N+1)Binit(BC,N+1)Y=0for i in range(N):P+=X-Bsum(BIT,D[A[i]])+(Y-Bsum(BC,D[A[i]]))*A[i]X+=C[i]Y+=Z[i]Badd(BC,D[A[i]],Z[i])Badd(BIT,D[A[i]],C[i])print(P%998244353)