結果
問題 |
No.1079 まお
|
ユーザー |
![]() |
提出日時 | 2025-02-25 10:22:18 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,189 bytes |
コンパイル時間 | 587 ms |
コンパイル使用メモリ | 82,088 KB |
実行使用メモリ | 309,508 KB |
最終ジャッジ日時 | 2025-02-25 10:22:41 |
合計ジャッジ時間 | 22,502 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 WA * 12 |
ソースコード
n,K=map(int,input().split()) a=list(map(int,input().split())) g=0 def solve(l,r): global g if l==r: v=a[l] if v+v==K: g+=1 return [(v,v)],[(v,v)] w=(r-l+1)//2 ql,_=solve(l,l+w-1) _,qr=solve(l+w,r) qrs={} qrc={} qrsx={} qrcx={} for i in range(len(qr)): rv,mv=qr[i] if rv==-1: continue if rv not in qrs: qrs[rv]=0 qrc[rv]=0 qrsx[rv]={} qrcx[rv]={} qrs[rv]+=i+1 qrc[rv]+=1 if mv not in qrsx[rv]: qrsx[rv][mv]=0 qrcx[rv][mv]=0 qrsx[rv][mv]+=i+1 qrcx[rv][mv]+=1 for i in range(len(ql)): lv,mv=ql[i] if lv==-1: continue if K-lv in qrs: g+=(i+1)*qrc[K-lv]+qrs[K-lv] if mv in qrsx[K-lv]: g-=(i+1)*qrcx[K-lv][mv]+qrsx[K-lv][mv] ql=[] mv=10**10 c=1 for i in reversed(range(l,r+1)): v=a[i] if v<mv: mv=v c=1 elif v==mv: c+=1 if c==1: ql+=[(v,mv)] else: ql+=[(-1,-1)] qr=[] mv=10**10 c=1 for i in range(l,r+1): v=a[i] if v<mv: mv=v c=1 elif v==mv: c+=1 if c==1: qr+=[(v,mv)] else: qr+=[(-1,-1)] return ql,qr solve(0,n-1) print(g)