Submission #875369

# Submission time Handle Problem Language Result Execution time Memory
875369 2023-11-19T09:27:06 Z matu Kangaroo (CEOI16_kangaroo) C++14
100 / 100
14 ms 16216 KB
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7, N = 2e3 + 1;
// ifstream fin("1.in");
// ofstream fout("1.out");
// #define cin fin
// #define cout fout
struct Mint
{
    int val;
    Mint(int x = 0)
    {
        val = x % mod;
    }
    Mint(long long x)
    {
        val = x % mod;
    }
    Mint operator+(Mint oth)
    {
        return val + oth.val;
    }
    Mint operator*(Mint oth)
    {
        return 1LL * val * oth.val;
    }
    Mint operator-(Mint oth)
    {
        return val - oth.val + mod;
    }
    Mint fp(Mint a, long long n){
        Mint p = 1;
        while(n){
            if(n & 1){
                p = p * a;
            }
            a = a * a;
            n /= 2;
        }
        return p;
    }
    Mint operator/(Mint oth){
        Mint invers = fp(oth, mod - 2);
        return 1LL * val * invers.val;
    }
    friend ostream& operator << (ostream& os, const Mint& lol){
        os << lol.val;
        return os;
    }
    void operator += (Mint oth){
        val = (1LL * val + oth.val) % mod;
        
    }
};
Mint dp[N][N];
int n, x ,y;
int main(){
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> x >> y;
    
    dp[1][1] = 1;
    for(int i = 2; i <= n; i++){
        for(int j = 1; j <= i; j++){
            
            if(i == x){
                dp[i][j + 1] += dp[i - 1][j];
                dp[i][j] += dp[i - 1][j];
            }
            else if(i == y){
                dp[i][j + 1] += dp[i - 1][j];
                dp[i][j] += dp[i - 1][j];
            }else{

                dp[i][j + 1] += dp[i - 1][j] * (j + 1 - (i > x) - (i > y));
                dp[i][j - 1] += dp[i - 1][j] * (j - 1);
            }
        }
    }

    cout << dp[n][1];

   
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 15960 KB Output is correct
2 Correct 2 ms 15964 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 15960 KB Output is correct
2 Correct 2 ms 15964 KB Output is correct
3 Correct 3 ms 15964 KB Output is correct
4 Correct 2 ms 15988 KB Output is correct
5 Correct 3 ms 15960 KB Output is correct
6 Correct 3 ms 15960 KB Output is correct
7 Correct 2 ms 16216 KB Output is correct
8 Correct 2 ms 15964 KB Output is correct
9 Correct 3 ms 16124 KB Output is correct
10 Correct 3 ms 15964 KB Output is correct
11 Correct 3 ms 15984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 15960 KB Output is correct
2 Correct 2 ms 15964 KB Output is correct
3 Correct 3 ms 15964 KB Output is correct
4 Correct 2 ms 15988 KB Output is correct
5 Correct 3 ms 15960 KB Output is correct
6 Correct 3 ms 15960 KB Output is correct
7 Correct 2 ms 16216 KB Output is correct
8 Correct 2 ms 15964 KB Output is correct
9 Correct 3 ms 16124 KB Output is correct
10 Correct 3 ms 15964 KB Output is correct
11 Correct 3 ms 15984 KB Output is correct
12 Correct 3 ms 15960 KB Output is correct
13 Correct 2 ms 15960 KB Output is correct
14 Correct 3 ms 15960 KB Output is correct
15 Correct 3 ms 16216 KB Output is correct
16 Correct 3 ms 15980 KB Output is correct
17 Correct 3 ms 15964 KB Output is correct
18 Correct 3 ms 15964 KB Output is correct
19 Correct 3 ms 15984 KB Output is correct
20 Correct 3 ms 16128 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 15960 KB Output is correct
2 Correct 2 ms 15964 KB Output is correct
3 Correct 3 ms 15964 KB Output is correct
4 Correct 2 ms 15988 KB Output is correct
5 Correct 3 ms 15960 KB Output is correct
6 Correct 3 ms 15960 KB Output is correct
7 Correct 2 ms 16216 KB Output is correct
8 Correct 2 ms 15964 KB Output is correct
9 Correct 3 ms 16124 KB Output is correct
10 Correct 3 ms 15964 KB Output is correct
11 Correct 3 ms 15984 KB Output is correct
12 Correct 3 ms 15960 KB Output is correct
13 Correct 2 ms 15960 KB Output is correct
14 Correct 3 ms 15960 KB Output is correct
15 Correct 3 ms 16216 KB Output is correct
16 Correct 3 ms 15980 KB Output is correct
17 Correct 3 ms 15964 KB Output is correct
18 Correct 3 ms 15964 KB Output is correct
19 Correct 3 ms 15984 KB Output is correct
20 Correct 3 ms 16128 KB Output is correct
21 Correct 4 ms 15964 KB Output is correct
22 Correct 4 ms 16104 KB Output is correct
23 Correct 4 ms 15964 KB Output is correct
24 Correct 14 ms 16128 KB Output is correct
25 Correct 14 ms 15964 KB Output is correct
26 Correct 14 ms 15964 KB Output is correct
27 Correct 14 ms 16124 KB Output is correct
28 Correct 9 ms 15960 KB Output is correct