Submission #3215578
Source Code Expand
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N=20,M=1<<20; const ll ms=1e9+7; ll read(){ ll x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1; ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f; } ll a[M],inv[M],fac[M],f[2][M]; void pre(ll n){ inv[0]=inv[1]=fac[0]=fac[1]=1; for (ll i=2;i<=n;i++){ inv[i]=(ms-ms/i)*inv[ms%i]%ms; fac[i]=fac[i-1]*i%ms; } for (ll i=2;i<=n;i++) inv[i]=inv[i-1]*inv[i]%ms; } ll C(ll n,ll k){ return (fac[n]*inv[n-k]%ms*inv[k]%ms)%ms; } bool cmp(ll a,ll b){ return a>b; } int main(){ ll n=read(),m=read(); for (ll i=1;i<=m;i++) scanf("%lld",&a[i]); sort(a+1,a+1+m,cmp); pre(1<<n); ll now=0; f[now][0]=1; for (ll i=1;i<=m;i++){ now^=1; for (ll j=0;j<(1<<n);j++){ if (f[now^1][j]==0) continue; f[now][j]=(f[now][j]+f[now^1][j])%ms; ll res=(1<<n)-j-1; for (ll k=0;k<(n);k++){ if ((j&(1<<k))==0){ f[now][j|(1<<k)]+=((f[now^1][j]*C(res-a[i]+1,(1<<k)-1)%ms*fac[1<<k])%ms); f[now][j|(1<<k)]%=ms; } } } memset(f[now^1],0,sizeof(f[now^1])); } ll ans=0; for (ll i=0;i<(1<<n);i++){ if (f[now][i]==0) continue; ll fs=1; if ((__builtin_popcount(i)%2)==1) fs*=-1; ans=(ans+fs*f[now][i]*fac[(1<<n)-1-i]%ms)%ms; } if (ans<0) ans+=ms; (ans<<=n)%=ms; printf("%lld\n",ans); return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Dark Horse |
User | sckalrter |
Language | C++14 (GCC 5.4.1) |
Score | 1100 |
Code Size | 1455 Byte |
Status | AC |
Exec Time | 94 ms |
Memory | 22784 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:31:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%lld",&a[i]); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1100 / 1100 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt |
All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01.txt | AC | 17 ms | 22784 KB |
02.txt | AC | 68 ms | 22784 KB |
03.txt | AC | 72 ms | 22784 KB |
04.txt | AC | 68 ms | 22784 KB |
05.txt | AC | 34 ms | 22784 KB |
06.txt | AC | 52 ms | 22784 KB |
07.txt | AC | 62 ms | 22784 KB |
08.txt | AC | 77 ms | 22784 KB |
09.txt | AC | 83 ms | 22784 KB |
10.txt | AC | 74 ms | 22784 KB |
11.txt | AC | 3 ms | 4352 KB |
12.txt | AC | 6 ms | 16640 KB |
13.txt | AC | 9 ms | 22784 KB |
14.txt | AC | 10 ms | 22784 KB |
15.txt | AC | 6 ms | 22784 KB |
16.txt | AC | 7 ms | 22784 KB |
17.txt | AC | 8 ms | 22784 KB |
18.txt | AC | 9 ms | 22784 KB |
19.txt | AC | 9 ms | 22784 KB |
20.txt | AC | 11 ms | 22784 KB |
21.txt | AC | 88 ms | 22784 KB |
22.txt | AC | 81 ms | 22784 KB |
23.txt | AC | 55 ms | 22784 KB |
24.txt | AC | 20 ms | 22784 KB |
25.txt | AC | 37 ms | 22784 KB |
26.txt | AC | 11 ms | 22784 KB |
27.txt | AC | 10 ms | 22784 KB |
28.txt | AC | 6 ms | 22784 KB |
29.txt | AC | 9 ms | 22784 KB |
30.txt | AC | 8 ms | 22784 KB |
31.txt | AC | 11 ms | 22784 KB |
32.txt | AC | 94 ms | 22784 KB |
33.txt | AC | 6 ms | 22784 KB |
34.txt | AC | 7 ms | 22784 KB |
35.txt | AC | 10 ms | 22784 KB |
36.txt | AC | 10 ms | 22784 KB |
sample-01.txt | AC | 4 ms | 16640 KB |
sample-02.txt | AC | 6 ms | 22784 KB |
sample-03.txt | AC | 2 ms | 4352 KB |
sample-04.txt | AC | 7 ms | 22784 KB |
sample-05.txt | AC | 90 ms | 22784 KB |