結果
問題 | No.2950 Max Min Product |
ユーザー |
![]() |
提出日時 | 2024-10-26 00:16:04 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,630 bytes |
コンパイル時間 | 329 ms |
コンパイル使用メモリ | 82,512 KB |
実行使用メモリ | 117,380 KB |
最終ジャッジ日時 | 2024-10-26 00:16:10 |
合計ジャッジ時間 | 6,000 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 3 |
other | TLE * 1 -- * 36 |
ソースコード
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)]B=448st1=[0]*B*Bst2=[0]*Bfor v,i in q[::-1]:st1[i]+=1st2[i//B]+=1ok=ing=-1while abs(ok-ng)>1:m=(ok+ng)//2g=0l=mr=iyl=l//Byr=r//Bif 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])if g==1:ok=melse:ng=mL=okok=ing=nwhile abs(ok-ng)>1:m=(ok+ng)//2g=0l=ir=myl=l//Byr=r//Bif 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])if g==1:ok=melse:ng=mR=okp[i]+=[(L,i,v)]p[R+1]+=[(L,i,pow(v,M-2,M))]st1=[0]*B*Bst2=[0]*Bfor v,i in q:st1[i]+=1st2[i//B]+=1ok=ing=-1while abs(ok-ng)>1:m=(ok+ng)//2g=0l=mr=iyl=l//Byr=r//Bif 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])if g==1:ok=melse:ng=mL=okok=ing=nwhile abs(ok-ng)>1:m=(ok+ng)//2g=0l=ir=myl=l//Byr=r//Bif 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])if g==1:ok=melse:ng=mR=okp[i]+=[(L,i,v)]p[R+1]+=[(L,i,pow(v,M-2,M))]exit()ans=0st1=[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)