제출 #1370409

#제출 시각아이디문제언어결과실행 시간메모리
1370409eyadoozZapina (COCI20_zapina)C++20
110 / 110
74 ms3384 KiB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
#define endl '\n'
#define mod 1000000007

int main()
{
    cin.tie(0) -> sync_with_stdio(0);

    int n;
    cin >> n;
    ll dp[n+5][n+5][2]={},ck[n+5][n+5]={};
    for(int i = 0;i <= n;i++) {
        ck[i][0]=ck[i][i]=1;
        for(int j = 1;j<i;j++) {
            ck[i][j]=(ck[i-1][j]+ck[i-1][j-1]+mod)%mod;
        }
    }
    dp[0][0][0]=1;
    for(int i = 1;i <= n;i++) {
        for(int j = 0;j <= n;j++) {
            for(int k=0;k <= j;k++) {
                if(k!=i) dp[i][j][0]+=dp[i-1][j-k][0]*ck[n-j+k][k], dp[i][j][0]%=mod;
                dp[i][j][1]+=dp[i-1][j-k][1]*ck[n-j+k][k];
                dp[i][j][1]%=mod;
                if(i==k) dp[i][j][1]+=dp[i-1][j-k][0]*ck[n-j+k][k], dp[i][j][1]%=mod;
            }
        }
    }

    cout << dp[n][n][1];
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…