Submission #1290405

#TimeUsernameProblemLanguageResultExecution timeMemory
1290405Timosh캥거루 (CEOI16_kangaroo)C++20
51 / 100
497 ms589824 KiB
#include <bits/stdc++.h>

using namespace std;

#define int int64_t
#define all(x) x.begin(), x.end()

int M = 1e9 + 7;

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    // freopen("kangaroo.in", "r", stdin);
    // freopen("kangaroo.out", "w", stdout);
    int n, s, t;
    cin >> n >> s >> t;
    vector<vector<vector<int>>> dp(n, vector<vector<int>>(n, vector<int>(n + 1)));
    s--, t--;
    int ans = 0;
    dp[s][t][n] = 1;
    s = n - s - 1;
    t = n - t - 1;
    dp[s][t][n] = 1;
    for (int z = n; z > 1; z--)
        for (int x = 0; x < z; x++)
            for (int y = 0; y < z; y++)
            {
                if (x == y || dp[x][y][z] == 0)
                    continue;
                for (int i = 0; i < z; i++)
                {
                    if (x == i)
                        continue;
                    if ((i < x) ^ (z % 2))
                        continue;
                    int l = (i - (i > x));
                    int r = (y - (y > x));
                    (dp[l][r][z - 1] += dp[x][y][z]) %= M;
                }
            }
    ans = dp[0][0][1];
    cout << ans % M;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...