結果
問題 | No.2950 Max Min Product |
ユーザー |
![]() |
提出日時 | 2024-10-26 00:46:11 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,871 bytes |
コンパイル時間 | 271 ms |
コンパイル使用メモリ | 82,580 KB |
実行使用メモリ | 182,008 KB |
最終ジャッジ日時 | 2024-10-26 00:46:17 |
合計ジャッジ時間 | 5,681 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | TLE * 1 -- * 36 |
ソースコード
n=int(input())a=list(map(int,input().split()))+[0]M=998244353q=[(a[i],i) for i in range(n)]q.sort()w=[[0,0] for i in range(n)]p=[[] for i in range(n+1)]X=10**10a[-1]=Xql=[-1]for i in range(n):while a[ql[-1]]<a[i]:ql.pop()w[i][0]=ql[-1]+1ql+=[i]qr=[n]for i in reversed(range(n)):while a[qr[-1]]<a[i]:qr.pop()w[i][1]=qr[-1]-1qr+=[i]for i in range(n):v=a[i]l,r=w[i]p[i]+=[(l,i,v)]p[r+1]+=[(l,i,pow(v,M-2,M))]a[-1]=-Xql=[-1]for i in range(n):while a[ql[-1]]>a[i]:ql.pop()w[i][0]=ql[-1]+1ql+=[i]qr=[n]for i in reversed(range(n)):while a[qr[-1]]>a[i]:qr.pop()w[i][1]=qr[-1]-1qr+=[i]for i in range(n):v=a[i]l,r=w[i]p[i]+=[(l,i,v)]p[r+1]+=[(l,i,pow(v,M-2,M))]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)