Submission #3727939


Source Code Expand

//include
//------------------------------------------
#include <vector>
#include <list>
#include <map>
#include <climits>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <queue>
#include <random>
#include <complex>
#include <regex>

using namespace std;

#define SHOW_VECTOR(v) {std::cerr << #v << "\t:";for(const auto& xxx : v){std::cerr << xxx << " ";}std::cerr << "\n";}
#define SHOW_MAP(v){std::cerr << #v << endl; for(const auto& xxx: v){std::cerr << xxx.first << " " << xxx.second << "\n";}}

constexpr long long MOD = 1e9 + 7;
long long fac[400010];
long long inv[400010];

long long pow_mod(long long n, long long p) {
    long long ret = 1;
    while (p > 0) {
        if (p & 1) ret = (ret * n) % MOD;
        n = (n * n) % MOD;
        p >>= 1;
    }
    return ret;
}

void prepare() {
    fac[0] = fac[1] = 1LL;
    inv[0] = inv[1] = 1LL;
    for (long long i = 2; i <= 400000; i++) {
        fac[i] = fac[i - 1] * i;
        fac[i] %= MOD;
        inv[i] = pow_mod(fac[i], MOD - 2LL);
    }
}

long long ncr_mod(long long n, long long r) {
    return fac[n] * inv[n - r] % MOD * inv[r] % MOD;
}

int main() {

    long long H, W, A, B;
    cin >> H >> W >> A >> B;

    prepare();

    long long ans = 0;

    for (long long w = B; w < W; w++) {
        long long w1 = w;
        long long h1 = (H - A - 1);
        long long sum1 = ncr_mod(w1 + h1, w1);
        long long w2 = W - w1 - 1;
        long long h2 = A - 1;
        long long sum2 = ncr_mod(w2 + h2, w2);
        ans += (sum1 * sum2) % MOD;
        ans %= MOD;
    }

    cout << ans << endl;

    return 0;
}



























































Submission Info

Submission Time
Task D - Iroha and a Grid
User ganyariya
Language C++14 (GCC 5.4.1)
Score 400
Code Size 2084 Byte
Status AC
Exec Time 65 ms
Memory 6528 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 4
AC × 26
Set Name Test Cases
Sample subtask0_01.txt, subtask0_02.txt, subtask0_03.txt, subtask0_04.txt
All subtask0_01.txt, subtask0_02.txt, subtask0_03.txt, subtask0_04.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_max.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_max.txt
Case Name Status Exec Time Memory
subtask0_01.txt AC 64 ms 6528 KB
subtask0_02.txt AC 64 ms 6528 KB
subtask0_03.txt AC 64 ms 6528 KB
subtask0_04.txt AC 65 ms 6528 KB
subtask1_01.txt AC 64 ms 6528 KB
subtask1_02.txt AC 64 ms 6528 KB
subtask1_03.txt AC 64 ms 6528 KB
subtask1_04.txt AC 64 ms 6528 KB
subtask1_05.txt AC 64 ms 6528 KB
subtask1_06.txt AC 64 ms 6528 KB
subtask1_07.txt AC 65 ms 6528 KB
subtask1_08.txt AC 64 ms 6528 KB
subtask1_09.txt AC 64 ms 6528 KB
subtask1_10.txt AC 64 ms 6528 KB
subtask1_max.txt AC 64 ms 6528 KB
subtask2_01.txt AC 64 ms 6528 KB
subtask2_02.txt AC 64 ms 6528 KB
subtask2_03.txt AC 64 ms 6528 KB
subtask2_04.txt AC 64 ms 6528 KB
subtask2_05.txt AC 64 ms 6528 KB
subtask2_06.txt AC 65 ms 6528 KB
subtask2_07.txt AC 64 ms 6528 KB
subtask2_08.txt AC 65 ms 6528 KB
subtask2_09.txt AC 65 ms 6528 KB
subtask2_10.txt AC 65 ms 6528 KB
subtask2_max.txt AC 64 ms 6528 KB