結果
問題 | No.2950 Max Min Product |
ユーザー |
![]() |
提出日時 | 2024-10-26 00:30:28 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,159 bytes |
コンパイル時間 | 960 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 239,656 KB |
最終ジャッジ日時 | 2024-10-26 00:32:19 |
合計ジャッジ時間 | 92,838 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 3 |
other | WA * 13 TLE * 21 -- * 3 |
ソースコード
n=int(input())a=list(map(int,input().split()))M=998244353q=[(a[i],i) for i in range(n)]q.sort()p=[[] for i in range(n+1)]tl=1<<20def update(p,x):while p<tl:st[p]+=xp+=p&(-p)returndef getsum(p):a=0while p>0:a+=st[p]p-=p&(-p)return ast=[0]*tlfor v,i in q[::-1]:update(i+1,1)ok=ing=-1while abs(ok-ng)>1:m=(ok+ng)//2l=mr=iif getsum(r+1)-getsum(l)==1:ok=melse:ng=mL=okok=ing=nwhile abs(ok-ng)>1:m=(ok+ng)//2l=ir=mif getsum(r+1)-getsum(l)==1:ok=melse:ng=mR=okp[i]+=[(L,i,v)]p[R+1]+=[(L,i,pow(v,M-2,M))]st=[0]*tlfor v,i in q:update(i+1,1)ok=ing=-1while abs(ok-ng)>1:m=(ok+ng)//2l=mr=iif getsum(r+1)-getsum(l)==1:ok=melse:ng=mL=okok=ing=nwhile abs(ok-ng)>1:m=(ok+ng)//2l=ir=mif getsum(r+1)-getsum(l)==1:ok=melse:ng=mR=okp[i]+=[(L,i,v)]p[R+1]+=[(L,i,pow(v,M-2,M))]exit()ans=0B=448st1=[1]*B*Bst2=[B]*Blt=[1]*Bfor y in range(n):for l,r,v in p[y]:yl=l//Byr=r//Bfor i in range(yl*B,yl*B+B):st1[i]*=lt[yl]st1[i]%=Mlt[yl]=1for i in range(yr*B,yr*B+B):st1[i]*=lt[yr]st1[i]%=Mlt[yr]=1if yl==yr:for i in range(l,r+1):st2[yl]-=st1[i]st1[i]*=vst1[i]%=Mst2[yl]+=st1[i]st2[yl]%=Melse:for i in range(l,yl*B+B):st2[yl]-=st1[i]st1[i]*=vst1[i]%=Mst2[yl]+=st1[i]st2[yl]%=Mfor i in range(yl+1,yr):st2[i]*=vst2[i]%=Mlt[i]=vfor i in range(yr*B,r+1):st2[yr]-=st1[i]st1[i]*=vst1[i]%=Mst2[yr]+=st1[i]st2[yr]%=Mg=0l=0r=yyl=l//Byr=r//Bfor i in range(yl*B,yl*B+B):st1[i]*=lt[yl]st1[i]%=Mlt[yl]=1for i in range(yr*B,yr*B+B):st1[i]*=lt[yr]st1[i]%=Mlt[yr]=1if 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])ans+=gans%=Mprint(ans)