Submission #1233483

#TimeUsernameProblemLanguageResultExecution timeMemory
1233483LaMatematica14Chess Rush (CEOI20_chessrush)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h>
#include "arithmetics.h"
using namespace std;

const long long mod = 1000000007;

int main() {
    int R, C, Q; cin >> R >> C >> Q;
    vector<long long> precbin(C);
    vector<long long> precfact(C, 1);
    precbin[0] = R-1;
    for (int i = 1; i < C; i++) precbin[i] = (precbin[i-1]*(R+i-1))%mod;
    for (int i = 1; i < C; i++) precfact[i] = (precfact[i-1]*i)%mod;
    for (int i = 0; i < C; i++) precbin[i] = Div(precbin[i], precfact[i]);

    for (int i = 0; i < Q; i++) {
        char T; cin >> T;
        int c1, cr; cin >> c1 >> cr;
        if (T == 'P') {
            if (c1 == cr) {
                cout << R-1 << " 1"; 
            } else cout << "0 0";
        } else if (T == 'R') {
            if (c1 == cr) {
                cout << "1 1"; 
            } else cout << "2 2";
        } else if (T == 'Q') {
            if (c1 > cr) swap(c1, cr);
            if (c1 == cr || (R == C && c1 == 1 & cr == C)) {
                cout << "1 1"; 
            } else {
                int ok = 0;
                cout << "2 " << 4+ok;
            }
        } else if (T == 'K') {
            cout << R-1+c1-cr << " " << precbin[c1-cr];
        }
        cout << "\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...