結果
問題 | No.1300 Sum of Inversions |
ユーザー | sasa8uyauya |
提出日時 | 2024-09-19 19:58:05 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,522 bytes |
コンパイル時間 | 743 ms |
コンパイル使用メモリ | 82,380 KB |
実行使用メモリ | 175,908 KB |
最終ジャッジ日時 | 2024-09-19 19:59:06 |
合計ジャッジ時間 | 58,654 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 40 ms
53,396 KB |
testcase_01 | AC | 40 ms
53,828 KB |
testcase_02 | AC | 38 ms
53,968 KB |
testcase_03 | AC | 1,924 ms
129,772 KB |
testcase_04 | AC | 1,697 ms
129,336 KB |
testcase_05 | AC | 1,516 ms
127,396 KB |
testcase_06 | TLE | - |
testcase_07 | AC | 1,922 ms
134,116 KB |
testcase_08 | TLE | - |
testcase_09 | TLE | - |
testcase_10 | AC | 1,178 ms
132,208 KB |
testcase_11 | AC | 1,248 ms
132,176 KB |
testcase_12 | AC | 1,902 ms
129,076 KB |
testcase_13 | AC | 1,807 ms
129,032 KB |
testcase_14 | TLE | - |
testcase_15 | TLE | - |
testcase_16 | AC | 1,919 ms
130,116 KB |
testcase_17 | AC | 1,065 ms
126,640 KB |
testcase_18 | AC | 1,218 ms
130,996 KB |
testcase_19 | AC | 1,613 ms
123,900 KB |
testcase_20 | AC | 1,629 ms
123,760 KB |
testcase_21 | AC | 1,681 ms
124,004 KB |
testcase_22 | AC | 1,377 ms
128,456 KB |
testcase_23 | TLE | - |
testcase_24 | AC | 1,458 ms
124,012 KB |
testcase_25 | AC | 1,220 ms
133,128 KB |
testcase_26 | AC | 1,173 ms
132,936 KB |
testcase_27 | AC | 1,351 ms
131,616 KB |
testcase_28 | TLE | - |
testcase_29 | AC | 1,493 ms
124,100 KB |
testcase_30 | TLE | - |
testcase_31 | AC | 1,460 ms
127,352 KB |
testcase_32 | AC | 1,440 ms
124,300 KB |
testcase_33 | AC | 275 ms
108,724 KB |
testcase_34 | AC | 269 ms
104,768 KB |
testcase_35 | AC | 1,968 ms
143,884 KB |
testcase_36 | TLE | - |
ソースコード
n=int(input()) a=list(map(int,input().split())) z=sorted(set(a+[-1,10**10])) d={v:i for i,v in enumerate(z)} M=998244353 B=int(len(z)**0.5)+1 st1=[0]*B*B st2=[0]*B lc=[0]*n for i in range(B*B): st1[i]=0 st2[i//B]=0 for i in range(n): v=a[i] g=0 l=d[v]+1 r=n+2 yl=l//B yr=r//B if yl==yr: g+=sum(st1[l:r+1]) else: g+=sum(st1[l:yl*B+B]) g+=sum(st2[yl+1:yr]) g+=sum(st1[yr*B:r+1]) lc[i]=g st1[d[v]]+=1 st2[d[v]//B]+=1 rc=[0]*n for i in range(B*B): st1[i]=0 st2[i//B]=0 for i in reversed(range(n)): v=a[i] g=0 l=0 r=d[v]-1 yl=l//B yr=r//B if yl==yr: g+=sum(st1[l:r+1]) else: g+=sum(st1[l:yl*B+B]) g+=sum(st2[yl+1:yr]) g+=sum(st1[yr*B:r+1]) rc[i]=g st1[d[v]]+=1 st2[d[v]//B]+=1 lc2=[0]*n for i in range(B*B): st1[i]=0 st2[i//B]=0 for i in range(n): v=a[i] g=0 l=d[v]+1 r=n+2 yl=l//B yr=r//B if yl==yr: g+=sum(st1[l:r+1]) else: g+=sum(st1[l:yl*B+B]) g+=sum(st2[yl+1:yr]) g+=sum(st1[yr*B:r+1]) lc2[i]=g st1[d[v]]+=lc[i] st2[d[v]//B]+=lc[i] rc2=[0]*n for i in range(B*B): st1[i]=0 st2[i//B]=0 for i in reversed(range(n)): v=a[i] g=0 l=0 r=d[v]-1 yl=l//B yr=r//B if yl==yr: g+=sum(st1[l:r+1]) else: g+=sum(st1[l:yl*B+B]) g+=sum(st2[yl+1:yr]) g+=sum(st1[yr*B:r+1]) rc2[i]=g st1[d[v]]+=rc[i] st2[d[v]//B]+=rc[i] ans=0 ans+=sum(a[i]*rc2[i] for i in range(n))%M ans+=sum(a[i]*lc[i]*rc[i] for i in range(n))%M ans+=sum(a[i]*lc2[i] for i in range(n))%M print(ans%M)