Submission #3778978


Source Code Expand

#include <bits/stdc++.h>

#define each(i, c) for (auto& i : c)
#define unless(cond) if (!(cond))

using namespace std;

typedef long long int lli;
typedef unsigned long long ull;
typedef complex<double> point;

template<typename P, typename Q> ostream& operator << (ostream& os, pair<P, Q> p) { os << "(" << p.first << "," << p.second << ")"; return os; }
template<typename P, typename Q> istream& operator >> (istream& is, pair<P, Q>& p) { is >> p.first >> p.second; return is; }
template<typename T> ostream& operator << (ostream& os, vector<T> v) { os << "("; each (i, v) os << i << ","; os << ")"; return os; }
template<typename T> istream& operator >> (istream& is, vector<T>& v) { each (i, v) is >> i; return is; }

template<typename T> inline T setmax(T& a, T b) { return a = std::max(a, b); }
template<typename T> inline T setmin(T& a, T b) { return a = std::min(a, b); }

lli ext_gcd(lli a, lli b, lli &x, lli &y)
{
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    lli d = ext_gcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}

lli mod_inverse(lli a, lli m)
{
  lli x, y;
  ext_gcd(a, m, x, y);
  return (m + x % m) % m;
}

constexpr lli mod = 1e9 + 7;
constexpr int N = 1e5 * 2 + 10;
lli fact[N];
lli fact_inverse[N];

lli nCr(lli n, lli r)
{
  return (((fact[n] * fact_inverse[r]) % mod) * fact_inverse[n - r]) % mod;
}
int main(int argc, char *argv[])
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);

  fact[0] = 1;
  for (int i = 1; i < N; ++i) {
    fact[i] = (fact[i - 1] * i) % mod;
  }
  for (int i = 0; i < N; ++i) {
    fact_inverse[i] = mod_inverse(fact[i], mod);
  }

  int h, w, a, b;
  while (cin >> h >> w >> a >> b) {
    lli sum = 0;
    for (int i = 0; i < h - a; ++i) {
      int p = w - b - 1 + h - i - 1;
      int q = w - b - 1;
      lli x = nCr(b + i - 1, i) * nCr(p, q);
      (sum += x % mod) %= mod;
    }
    cout << sum << endl;
  }

  return 0;
}

Submission Info

Submission Time
Task D - Iroha and a Grid
User Johniel
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1994 Byte
Status AC
Exec Time 67 ms
Memory 3328 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 65 ms 3328 KB
subtask0_02.txt AC 65 ms 3328 KB
subtask0_03.txt AC 65 ms 3328 KB
subtask0_04.txt AC 66 ms 3328 KB
subtask1_01.txt AC 65 ms 3328 KB
subtask1_02.txt AC 65 ms 3328 KB
subtask1_03.txt AC 65 ms 3328 KB
subtask1_04.txt AC 65 ms 3328 KB
subtask1_05.txt AC 65 ms 3328 KB
subtask1_06.txt AC 66 ms 3328 KB
subtask1_07.txt AC 65 ms 3328 KB
subtask1_08.txt AC 66 ms 3328 KB
subtask1_09.txt AC 66 ms 3328 KB
subtask1_10.txt AC 66 ms 3328 KB
subtask1_max.txt AC 66 ms 3328 KB
subtask2_01.txt AC 66 ms 3328 KB
subtask2_02.txt AC 66 ms 3328 KB
subtask2_03.txt AC 65 ms 3328 KB
subtask2_04.txt AC 65 ms 3328 KB
subtask2_05.txt AC 65 ms 3328 KB
subtask2_06.txt AC 67 ms 3328 KB
subtask2_07.txt AC 66 ms 3328 KB
subtask2_08.txt AC 66 ms 3328 KB
subtask2_09.txt AC 67 ms 3328 KB
subtask2_10.txt AC 66 ms 3328 KB
subtask2_max.txt AC 66 ms 3328 KB