Submission #1295346

#TimeUsernameProblemLanguageResultExecution timeMemory
1295346ElayV13Kangaroo (CEOI16_kangaroo)C++20
36 / 100
4 ms1084 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int mod = (1e9 + 7) , INF = (1e18) , N = (2e5 + 5) , LOG = (20);

int n , cs , cf;
int dp[41][41][41][2];

int add(int a , int b){
          return (a + b) % mod;
}

signed main(){
          cin >> n >> cs >> cf;
          dp[2][1][2][0] = 1;
          dp[2][2][1][1] = 1;
          for(int len = 3;len <= n;len++)
          {
                    for(int s = 1;s <= len;s++)
                    {
                              for(int f = 1;f <= len;f++)
                              {
                                        if(f == s) continue;
                                        for(int k = s;k < len;k++)
                                        {
                                                  dp[len][s][f][0] = add(dp[len][s][f][0] , dp[len - 1][k][f - ((f > s) ? 1 : 0)][1]);
                                        }
                                        for(int k = 1;k < s;k++)
                                        {
                                                  dp[len][s][f][1] = add(dp[len][s][f][1] , dp[len - 1][k][f - ((f > s) ? 1 : 0)][0]);
                                        }
                              }
                    }
          }
          cout << add(dp[n][cs][cf][0] , dp[n][cs][cf][1]) << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...