結果
問題 |
No.3062 Rotate and Maximize
|
ユーザー |
![]() |
提出日時 | 2025-03-14 22:56:24 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 757 bytes |
コンパイル時間 | 440 ms |
コンパイル使用メモリ | 82,036 KB |
実行使用メモリ | 76,944 KB |
最終ジャッジ日時 | 2025-03-14 22:56:31 |
合計ジャッジ時間 | 6,647 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 WA * 28 |
ソースコード
N=int(input()) A=list(map(int,input().split())) mod=998244353 v=[0]*(N+1) for i in range(N): x=A[i] v[x]+=1 B=[0]*(N+1) for x in range(1,N+1): if v[x]<v[x-1]: print(0) exit() B[x]=v[x]-sum(B[:x]) u=[1]*(N+1) u2=[1]*(N+1) for i in range(1,N+1): u[i]=u[i-1]*i u[i]%=mod u2[i]=pow(u[i],-1,mod) def ncm(x,y): ans=u[x]*u2[y] ans%=mod ans*=u2[x-y] ans%=mod return ans p=[0]*(N+1) C=B[:] w=1 c=0 t=0 for k in range(1,N+1): if C[k]==0: continue if c==0: c=C[k] t=k else: b=C[k] w*=ncm(b+c-1,c-1) w%=mod c+=C[k] result=w for k in range(1,N+1): if v[k]==0: continue if k==t: result*=u[v[k]-1] result%=mod else: result*=u[v[k]] result%=mod result*=N result%=mod print(result)