結果
問題 | No.1300 Sum of Inversions |
ユーザー | sasa8uyauya |
提出日時 | 2024-09-19 19:30:54 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,389 bytes |
コンパイル時間 | 216 ms |
コンパイル使用メモリ | 82,436 KB |
実行使用メモリ | 175,200 KB |
最終ジャッジ日時 | 2024-09-19 19:31:59 |
合計ジャッジ時間 | 55,710 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 43 ms
59,276 KB |
testcase_01 | AC | 42 ms
59,684 KB |
testcase_02 | AC | 42 ms
59,512 KB |
testcase_03 | AC | 1,614 ms
129,956 KB |
testcase_04 | AC | 1,575 ms
129,440 KB |
testcase_05 | AC | 1,221 ms
127,512 KB |
testcase_06 | AC | 1,798 ms
140,712 KB |
testcase_07 | AC | 1,986 ms
134,812 KB |
testcase_08 | TLE | - |
testcase_09 | AC | 1,964 ms
145,388 KB |
testcase_10 | AC | 1,147 ms
132,256 KB |
testcase_11 | AC | 1,105 ms
132,360 KB |
testcase_12 | AC | 1,638 ms
129,188 KB |
testcase_13 | AC | 1,621 ms
128,884 KB |
testcase_14 | TLE | - |
testcase_15 | AC | 1,872 ms
145,380 KB |
testcase_16 | AC | 1,612 ms
130,088 KB |
testcase_17 | AC | 1,111 ms
126,844 KB |
testcase_18 | AC | 1,272 ms
133,780 KB |
testcase_19 | AC | 1,426 ms
124,044 KB |
testcase_20 | AC | 1,384 ms
123,748 KB |
testcase_21 | AC | 1,568 ms
124,268 KB |
testcase_22 | AC | 1,405 ms
128,452 KB |
testcase_23 | AC | 1,803 ms
140,704 KB |
testcase_24 | AC | 1,401 ms
124,924 KB |
testcase_25 | AC | 1,066 ms
133,208 KB |
testcase_26 | AC | 1,101 ms
132,948 KB |
testcase_27 | AC | 1,363 ms
131,872 KB |
testcase_28 | TLE | - |
testcase_29 | AC | 1,451 ms
124,080 KB |
testcase_30 | AC | 1,927 ms
145,292 KB |
testcase_31 | AC | 1,227 ms
127,488 KB |
testcase_32 | AC | 1,406 ms
125,092 KB |
testcase_33 | AC | 1,160 ms
109,236 KB |
testcase_34 | AC | 1,150 ms
106,464 KB |
testcase_35 | AC | 1,713 ms
143,764 KB |
testcase_36 | AC | 1,751 ms
174,808 KB |
ソースコード
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=448 lc=[0]*n st1=[0]*B*B st2=[0]*B 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 st1=[0]*B*B st2=[0]*B 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 st1=[0]*B*B st2=[0]*B 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 st1=[0]*B*B st2=[0]*B 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)