Submission #1189936

#TimeUsernameProblemLanguageResultExecution timeMemory
1189936RafiullahKangaroo (CEOI16_kangaroo)C++20
100 / 100
50 ms55112 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define mod 1000000007 const int N = 2e3 + 5; int dp[N][N][3]; void solve(){ int n, s, f; cin >> n >> s >> f; dp[1][1][(s == 1) + (f == 1)] = 1; for (int i = 1 ; i<n ; i++) for (int j = 1 ; j<= i ; j++) if (i+1 == s || i+1 == f) { for (int k = 0 ; k < 2 ; k++) { dp[i + 1][j][k + 1] += dp[i][j][k], dp[i + 1][j][k + 1] %= mod; dp[i + 1][j + 1][k + 1] += dp[i][j][k], dp[i + 1][j + 1][k + 1] %= mod; } } else { for (int k=0;k<3;k++) { dp[i+1][j+1][k] += dp[i][j][k]*(j+1-k), dp[i + 1][j + 1][k] %= mod; dp[i+1][j-1][k] += dp[i][j][k]*(j-1), dp[i + 1][j - 1][k] %= mod; } } cout << dp[n][1][2] << '\n'; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1 ;//cin >> t; while(t -- )solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...