Submission #488317

# Submission time Handle Problem Language Result Execution time Memory
488317 2021-11-18T14:16:28 Z ExplodingFreeze Kangaroo (CEOI16_kangaroo) C++17
100 / 100
22 ms 22988 KB
#include <bits/stdc++.h>
#define int long long
const int MOD = 1e9 + 7;
using pii=std::pair<int,int>;
using namespace std;

const int maxn = 2005;

int n, cs, cf, dp[maxn][maxn];  // dp[positions visited in first i steps][as j components] = number of ways of doing so
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> cs >> cf;
    cs--; cf--;
    dp[1][1] = 1;
    for(int i = 1; i < n; i++)
        for(int j = 1; j <= i; j++)
        {
            if(i == cs || i == cf)
            {
                // Add at start / end as expected, creating a new component if required
                dp[i + 1][j] += dp[i][j];
                dp[i + 1][j] %= MOD;
                dp[i + 1][j + 1] += dp[i][j];
                dp[i + 1][j + 1] %= MOD;
            }
            else
            {
                // Place as a seperate component
                dp[i + 1][j + 1] += (j + 1 - (i > cs) - (i > cf)) * dp[i][j];
                dp[i + 1][j + 1] %= MOD;
                // Merge two components together
                dp[i + 1][j - 1] += (j - 1) * dp[i][j];
                dp[i + 1][j - 1] %= MOD;
            }
        }
    cout << dp[n][1] << "\n";
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 0 ms 460 KB Output is correct
5 Correct 0 ms 460 KB Output is correct
6 Correct 0 ms 460 KB Output is correct
7 Correct 0 ms 460 KB Output is correct
8 Correct 0 ms 460 KB Output is correct
9 Correct 0 ms 460 KB Output is correct
10 Correct 0 ms 460 KB Output is correct
11 Correct 0 ms 460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 0 ms 460 KB Output is correct
5 Correct 0 ms 460 KB Output is correct
6 Correct 0 ms 460 KB Output is correct
7 Correct 0 ms 460 KB Output is correct
8 Correct 0 ms 460 KB Output is correct
9 Correct 0 ms 460 KB Output is correct
10 Correct 0 ms 460 KB Output is correct
11 Correct 0 ms 460 KB Output is correct
12 Correct 1 ms 1228 KB Output is correct
13 Correct 1 ms 1100 KB Output is correct
14 Correct 1 ms 1228 KB Output is correct
15 Correct 1 ms 1228 KB Output is correct
16 Correct 1 ms 1228 KB Output is correct
17 Correct 1 ms 1228 KB Output is correct
18 Correct 1 ms 1100 KB Output is correct
19 Correct 1 ms 1228 KB Output is correct
20 Correct 1 ms 1228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 0 ms 460 KB Output is correct
5 Correct 0 ms 460 KB Output is correct
6 Correct 0 ms 460 KB Output is correct
7 Correct 0 ms 460 KB Output is correct
8 Correct 0 ms 460 KB Output is correct
9 Correct 0 ms 460 KB Output is correct
10 Correct 0 ms 460 KB Output is correct
11 Correct 0 ms 460 KB Output is correct
12 Correct 1 ms 1228 KB Output is correct
13 Correct 1 ms 1100 KB Output is correct
14 Correct 1 ms 1228 KB Output is correct
15 Correct 1 ms 1228 KB Output is correct
16 Correct 1 ms 1228 KB Output is correct
17 Correct 1 ms 1228 KB Output is correct
18 Correct 1 ms 1100 KB Output is correct
19 Correct 1 ms 1228 KB Output is correct
20 Correct 1 ms 1228 KB Output is correct
21 Correct 4 ms 4556 KB Output is correct
22 Correct 4 ms 5036 KB Output is correct
23 Correct 4 ms 5584 KB Output is correct
24 Correct 21 ms 22928 KB Output is correct
25 Correct 20 ms 22988 KB Output is correct
26 Correct 20 ms 22976 KB Output is correct
27 Correct 22 ms 22792 KB Output is correct
28 Correct 13 ms 15052 KB Output is correct