Submission #1230894

#TimeUsernameProblemLanguageResultExecution timeMemory
1230894The_SamuraiChess Rush (CEOI20_chessrush)C++20
0 / 100
3 ms320 KiB
#include "bits/stdc++.h"
#include "arithmetics.h"
using namespace std;

constexpr int P = 1e9+7;
int binpow(int base, int exp, int modulus=P) {
    base %= modulus;
    int result = 1;
    while (exp > 0) {
        if (exp & 1) result = (1ll*result * base) % modulus;
        base = (1ll*base * base) % modulus;
        exp >>= 1;
    }
    return result;
}

int c(int n, int k) {
    k = max(k, n - k);
    int ans = 1;
    for (int i = 1; i <= n - k; i++) ans = Mul(ans, i);
    ans = Div(1, ans);
    for (int i = k + 1; i <= n; i++) ans = Mul(ans, i);
    return ans;
}

int main() {
    int n, m, q;
    cin >> n >> m >> q;
    while (q--) {
        char op;
        int c1, c2;
        cin >> op >> c1 >> c2;
        assert(op == 'K');
        int d = abs(c1 - c2);
        int ans = 0;
        for (int i = d; i < n; i += 2) {
            ans = Add(ans, Mul(c(n - 1, i), c(i, (i - d) / 2)));
        }
        cout << n - 1 << ' ' << ans << '\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...