比赛 26暑假集训模拟赛1 评测结果 AATTTTTTTT
题目名称 最终得分 20
用户昵称 2_16鸡扒拌面 运行时间 25.359 s
代码语言 C++ 内存使用 3.42 MiB
提交时间 2026-06-29 12:51:08
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

int n,mod,ans;
int a[15],vis[15];

bool check()
{
	int dp[15]={0},mx=0;
	for(int i=1;i<=n;i++)
	{
		dp[i]=1;
		for(int j=1;j<i;j++)
		{
			if(a[j]>a[i]) dp[i]=max(dp[i],dp[j]+1);
		}
		mx=max(mx,dp[i]);
	}
	return mx<=3;
}

void dfs(int pos)
{
	if(pos>n)
	{
		if(check()) ans=(ans+1)%mod;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(!vis[i])
		{
			vis[i]=1;
			a[pos]=i;
			dfs(pos+1);
			vis[i]=0;
		}
	}
}

int main()
{
	freopen("great.in","r",stdin);
	freopen("great.out","w",stdout);
	cin>>n>>mod;
	dfs(1);
	cout<<ans<<"\n";
	return 0;
}