結果

問題 No.1300 Sum of Inversions
ユーザー 👑 KazunKazun
提出日時 2020-11-27 22:39:09
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,592 ms / 2,000 ms
コード長 3,363 bytes
コンパイル時間 368 ms
コンパイル使用メモリ 82,132 KB
実行使用メモリ 214,832 KB
最終ジャッジ日時 2024-07-26 19:01:12
合計ジャッジ時間 39,405 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 43 ms
54,784 KB
testcase_01 AC 42 ms
55,592 KB
testcase_02 AC 42 ms
54,768 KB
testcase_03 AC 1,215 ms
165,800 KB
testcase_04 AC 1,184 ms
165,176 KB
testcase_05 AC 959 ms
140,616 KB
testcase_06 AC 1,376 ms
194,076 KB
testcase_07 AC 1,337 ms
192,760 KB
testcase_08 AC 1,485 ms
201,196 KB
testcase_09 AC 1,489 ms
201,052 KB
testcase_10 AC 810 ms
128,452 KB
testcase_11 AC 805 ms
128,996 KB
testcase_12 AC 1,219 ms
165,124 KB
testcase_13 AC 1,185 ms
164,548 KB
testcase_14 AC 1,592 ms
213,716 KB
testcase_15 AC 1,458 ms
200,796 KB
testcase_16 AC 1,241 ms
165,864 KB
testcase_17 AC 767 ms
124,652 KB
testcase_18 AC 881 ms
130,352 KB
testcase_19 AC 1,057 ms
155,088 KB
testcase_20 AC 1,110 ms
156,296 KB
testcase_21 AC 1,098 ms
156,648 KB
testcase_22 AC 981 ms
140,608 KB
testcase_23 AC 1,408 ms
193,772 KB
testcase_24 AC 1,034 ms
143,000 KB
testcase_25 AC 872 ms
129,628 KB
testcase_26 AC 888 ms
131,756 KB
testcase_27 AC 1,005 ms
138,380 KB
testcase_28 AC 1,576 ms
212,712 KB
testcase_29 AC 1,080 ms
156,212 KB
testcase_30 AC 1,507 ms
201,740 KB
testcase_31 AC 1,007 ms
141,216 KB
testcase_32 AC 1,018 ms
144,080 KB
testcase_33 AC 187 ms
103,968 KB
testcase_34 AC 201 ms
103,408 KB
testcase_35 AC 737 ms
191,924 KB
testcase_36 AC 835 ms
214,832 KB
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

class Binary_Indexed_Tree_Exception(Exception):
pass
class Binary_Indexed_Tree():
def __init__(self,L):
"""calcNBinary Indexed Tree
calc:(2,)
unit:calc(xe=ex=xe)
inv:calc(1)
"""
N=len(L)
d=max(1,(N-1).bit_length())
k=2**d
X=[None]+[0]*k
self.num=k
self.depth=d
if L:
for i in range(len(L)):
p=i+1
while p<=k:
X[p]=(X[p]+L[i])
p+=p&(-p)
self.data=X
def index(self,k,index=1):
"""k.
k:
index:
"""
p=k+(1-index)
return self.sum(p,p,index)
def add(self,k,x,index=1,right=False):
"""kx,.
k:
x:
index:
right:
"""
p=k+(1-index)
while p<=self.num:
if right==False:
#
self.data[p]=x+self.data[p]
else:
#
self.data[p]=self.data[p]+x
p+=p&(-p)
def update(self,k,x,index=1,right=False):
"""kx,.
k:
x:
"""
a=self.index(k,index)
if right==False:
#
y=x-a
else:
#
y=-a+x
self.add(k,y,index,right)
def sum(self,From,To,index=1):
"""FromTo.
※From!=1使,.
From:
To:
index:
"""
alpha=max(1,From+(1-index))
beta=min(self.num,To+(1-index))
if alpha==1:
return self.__section(beta)
else:
return -self.__section(alpha-1)+self.__section(beta)
def __section(self,To):
S=0
x=To
while x>0:
S+=self.data[x]
x-=x&(-x)
return S
def all_sum(self):
return self.data[-1]
#================================================
from collections import deque,defaultdict
import sys
input=sys.stdin.readline
N=int(input())
A=list(map(int,input().split()))
Mod=998244353
Count=defaultdict(int)
for a in A:
Count[a]+=1
S=list(set(A))
S.sort()
T=len(S)
D={x:i for i,x in enumerate(S)}
L=[0]*T
for x in D:
L[D[x]]=Count[x]
X=Binary_Indexed_Tree([0]*T)
Y=Binary_Indexed_Tree(L)
P=Binary_Indexed_Tree([0]*T)
Q=Binary_Indexed_Tree([S[i]*Count[S[i]] for i in range(T)])
K=0
S_min,S_max=S[-1],S[0]
for a in A:
if a==S_min or a==S_max:
X.add(D[a],1,0)
Y.add(D[a],-1,0)
P.add(D[a],a,0)
Q.add(D[a],-a,0)
continue
alpha=X.sum(D[a]+1,T-1,0)
beta =Y.sum(0,D[a]-1,0)
mu=P.sum(D[a]+1,T-1,0)
nu=Q.sum(0,D[a]-1,0)
K+=alpha*nu+beta*mu+a*(alpha*beta)
K%=Mod
X.add(D[a],1,0)
Y.add(D[a],-1,0)
P.add(D[a],a,0)
Q.add(D[a],-a,0)
print(K)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0