Submission #18641234
Source Code Expand
/*
after dusk passed,
there is a starry sky.
*/
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define m_k make_pair
#define mod 1000000007
#define int long long
using namespace std;
const int N=(1<<17);
int n,m,h,a[20],fac[N],inv[N],ans,cnt[20],dp[N];
inline void ck(int &a){a=(a>=mod)?a%mod:a;}
inline void add(int &a,int b){ck(b);a=((a+b>=mod)?a+b-mod:a+b);}
inline void del(int &a,int b){ck(b);a=((a-b<0)?a-b+mod:a-b);}
inline void mul(int &a,int b){ck(b);a=(a*b)%mod;}
inline int C(int n,int m){return fac[n]*inv[m]%mod*inv[n-m]%mod;}
inline int m_pow(int a,int b)
{
int ans=1;
while (b)
{
if (b&1) mul(ans,a);
b>>=1;
mul(a,a);
}
return ans;
}
inline int read()
{
int f=1,x=0;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
return x*f;
}
signed main()
{
n=read();m=read();h=(1<<n);
for (int i=1;i<=m;i++) a[i]=read();
fac[0]=1;
for (int i=1;i<=h;i++) fac[i]=fac[i-1]*i%mod;
inv[h]=m_pow(fac[h],mod-2);
for (int i=h-1;i>=0;i--) inv[i]=(inv[i+1]*(i+1))%mod;
int full=(1<<n)-1;dp[0]=1;
for (int i=m;i>=1;i--)
{
for (int mask=full;mask>=0;mask--)
{
for (int j=0;j<n;j++)
{
if ((mask>>j)&1||h-a[i]+1-mask<(1<<j)) continue;
add(dp[mask|(1<<j)],dp[mask]*C(h-a[i]-mask,(1<<j)-1)%mod*fac[1<<j]%mod);
}
}
}
for (int mask=0;mask<=full;mask++)
{
int cnt=0;
for (int i=0;i<n;i++) cnt+=((mask>>i)&1);
if (cnt&1) del(ans,dp[mask]*fac[full^mask]%mod);
else add(ans,dp[mask]*fac[full^mask]%mod);
}
mul(ans,h);
printf("%lld\n",ans);
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Dark Horse |
| User | SevenDawns |
| Language | C++ (GCC 9.2.1) |
| Score | 1100 |
| Code Size | 1617 Byte |
| Status | AC |
| Exec Time | 116 ms |
| Memory | 5252 KiB |
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 | 25 ms | 3804 KiB |
| 02.txt | AC | 88 ms | 5100 KiB |
| 03.txt | AC | 91 ms | 5216 KiB |
| 04.txt | AC | 89 ms | 5224 KiB |
| 05.txt | AC | 63 ms | 4960 KiB |
| 06.txt | AC | 76 ms | 5092 KiB |
| 07.txt | AC | 86 ms | 4952 KiB |
| 08.txt | AC | 98 ms | 5180 KiB |
| 09.txt | AC | 103 ms | 5096 KiB |
| 10.txt | AC | 98 ms | 5176 KiB |
| 11.txt | AC | 7 ms | 4608 KiB |
| 12.txt | AC | 16 ms | 5212 KiB |
| 13.txt | AC | 26 ms | 4972 KiB |
| 14.txt | AC | 32 ms | 4996 KiB |
| 15.txt | AC | 1 ms | 3688 KiB |
| 16.txt | AC | 2 ms | 3512 KiB |
| 17.txt | AC | 3 ms | 3652 KiB |
| 18.txt | AC | 3 ms | 3692 KiB |
| 19.txt | AC | 2 ms | 3648 KiB |
| 20.txt | AC | 3 ms | 3584 KiB |
| 21.txt | AC | 113 ms | 4964 KiB |
| 22.txt | AC | 100 ms | 4996 KiB |
| 23.txt | AC | 82 ms | 4916 KiB |
| 24.txt | AC | 66 ms | 4700 KiB |
| 25.txt | AC | 78 ms | 5180 KiB |
| 26.txt | AC | 46 ms | 5192 KiB |
| 27.txt | AC | 6 ms | 3528 KiB |
| 28.txt | AC | 2 ms | 3644 KiB |
| 29.txt | AC | 3 ms | 3692 KiB |
| 30.txt | AC | 3 ms | 3656 KiB |
| 31.txt | AC | 3 ms | 3644 KiB |
| 32.txt | AC | 114 ms | 5224 KiB |
| 33.txt | AC | 2 ms | 3644 KiB |
| 34.txt | AC | 2 ms | 3688 KiB |
| 35.txt | AC | 4 ms | 3564 KiB |
| 36.txt | AC | 2 ms | 3564 KiB |
| sample-01.txt | AC | 2 ms | 3652 KiB |
| sample-02.txt | AC | 2 ms | 3528 KiB |
| sample-03.txt | AC | 3 ms | 3744 KiB |
| sample-04.txt | AC | 3 ms | 3508 KiB |
| sample-05.txt | AC | 116 ms | 5252 KiB |