結果
問題 |
No.1696 Nonnil
|
ユーザー |
![]() |
提出日時 | 2025-03-08 06:34:17 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,182 bytes |
コンパイル時間 | 429 ms |
コンパイル使用メモリ | 82,376 KB |
実行使用メモリ | 266,564 KB |
最終ジャッジ日時 | 2025-03-08 06:35:24 |
合計ジャッジ時間 | 12,959 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 29 TLE * 4 -- * 6 |
ソースコード
class FenwickTree: def __init__(self,n): self._n=n self.data=[0]*n def add(self,p,x): p+=1 while p<=self._n: self.data[p-1]+=x p+=p&(-p) def sum(self,l,r): return self._sum(r)-self._sum(l) def _sum(self,r): s=0 while r>0: s+=self.data[r-1] r-=r&(-r) return s n,k=map(int,input().split()) m=int(input()) X=k p=[X]*k for _ in range(m): l,r=map(int,input().split()) l-=1 r-=1 p[l]=min(p[l],r) for i in range(k): for j in range(i+1,k): if i!=j and p[i]<X and p[j]<X and p[i]>=p[j]: p[i]=X p=[(i,p[i]) for i in range(k) if p[i]<X] m=len(p) M=998244353 q=[[FenwickTree(k) for j in range(2)] for i in range(k+1)] for i in range(m): l,r=p[i] q[r-l+1][1].add(r,1) for j in range(k+1): if j+(r-l+1)<=k: q[j+(r-l+1)][0].add(r,q[j][1].sum(0,l)) q[j+(r-l+1)][1].add(r,q[j][0].sum(0,l)) for j in range(k+1): for rr in range(l,r): if j+(r-rr)<=k: q[j+(r-rr)][0].add(r,q[j][1].sum(rr,rr+1)) q[j+(r-rr)][1].add(r,q[j][0].sum(rr,rr+1)) a=pow(k,n,M) for i in range(k+1): a-=pow(k-i,n,M)*q[i][1].sum(0,k) a+=pow(k-i,n,M)*q[i][0].sum(0,k) a%=M print(a)