Submission #1305406

#TimeUsernameProblemLanguageResultExecution timeMemory
1305406petezaZapina (COCI20_zapina)C++20
110 / 110
111 ms3372 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const ll mod = 1e9+7; int n; ll dp[355][355][2]; ll ck[355][355]; ll cnk(int a, int b) { return ck[a][b]; } int main() { // your code goes here for(int i=0;i<355;i++) { ck[i][0] = 1; for(int j=1;j<=i;j++) { ck[i][j] = ck[i-1][j] + ck[i-1][j-1]; ck[i][j] %= mod; } } cin >> n; //memset(dp, -1, sizeof dp); memset(dp, 0, sizeof dp); 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(j-k==i) { dp[i][j][1] += dp[i-1][k][0]*cnk(n-k, j-k); dp[i][j][1] += dp[i-1][k][1]*cnk(n-k, j-k); //dp[i][j][1] %= mod; } else { dp[i][j][0] += dp[i-1][k][0]*cnk(n-k, j-k); dp[i][j][1] += dp[i-1][k][1]*cnk(n-k, j-k); dp[i][j][0] %= mod; } dp[i][j][1] %= mod; } } } cout << dp[n][n][1]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...