結果
問題 |
No.243 出席番号(2)
|
ユーザー |
![]() |
提出日時 | 2025-10-21 20:17:36 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,500 bytes |
コンパイル時間 | 1,338 ms |
コンパイル使用メモリ | 162,340 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-10-21 20:17:41 |
合計ジャッジ時間 | 4,107 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 WA * 4 |
ソースコード
#include <bits/stdc++.h> #define lint __int128 #define int long long #define Il inline #define fi first #define se second #define vec vector #define pb push_back #define IT ::iterator #define p_q priority_queue using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef double db; const int N=5e3,mod=1e9+7; const db eps=1e-9,pi=acos(-1.0); mt19937 rnd(time(0)); Il int rint(int l,int r){return rnd()%(r-l+1)+l;} // bool P1; Il int qpow(int x,int y){ int t=1; for(;y;y>>=1,x=x*x%mod){ if(y&1){ t=t*x%mod; } } return t; } int n,a[N+5],jc[N+5],iv[N+5],c[N+5],f[N+5],ans=0; Il int C(int x,int y){ return x<0||y<0||x<y?0:jc[x]*iv[y]%mod*iv[x-y]%mod; } // bool P2; signed main(){ //????????? ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); // cout<<abs((&P1)-(&P2))/1024/1024;return 0; jc[0]=1; for(int i=1;i<=N;i++){ jc[i]=jc[i-1]*i%mod; } iv[N]=qpow(jc[N],mod-2); for(int i=N-1;~i;i--){ iv[i]=iv[i+1]*(i+1)%mod; } cin>>n; for(int i=1;i<=n;i++){ cin>>a[i],c[++a[i]]++; } f[0]=1; for(int i=1;i<=N;i++){ for(int j=n;j;j--){ f[j]=(f[j]+f[j-1]*c[i]%mod)%mod; } } for(int i=0;i<=n;i++){ // cout<<f[i]<<' '; if(i&1){ ans=(ans-f[i]*jc[n-i]%mod+mod)%mod; }else{ ans=(ans+f[i]*jc[n-i]%mod)%mod; } } cout<<ans; return 0; }