Submission #00224


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <algorithm>
#include <cassert>
#include <iostream>
#include <vector>
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
using i64 = int64_t;
const int M = 3e6;
const i64 mod = 1e9 + 7;
vector<i64> fac(M), inv(M);
i64 modpow(i64 a, i64 x) {
if (x == 0) {
return 1;
} else if (x == 1) {
return a;
} else if (x & 1) {
return a * modpow(a, x - 1) % mod;
} else {
return modpow(a * a % mod, x / 2);
}
}
i64 cmb(int n, int r) { return fac[n] * inv[r] % mod * inv[n - r] % mod; }
int main() {
fac[0] = fac[1] = 1;
for (int i = 2; i < M; i++) {
fac[i] = fac[i - 1] * i % mod;
}
rep(i, M) inv[i] = modpow(fac[i], mod - 2);
int w, h, n;
cin >> w >> h >> n;
vector<pair<int, int>> v(n);
rep(i, n) cin >> v[i].first >> v[i].second;
v.push_back({w - 1, h - 1});
auto pre = make_pair(0, 0);
i64 ans = 1;
for (auto p : v) {
auto a = p.first - pre.first, b = p.second - pre.second;
(ans *= cmb(a + b, a)) %= mod;
pre = p;
}
cout << ans << endl;
return 0;
}

ステータス

項目 データ
問題 0006 - 寄り道
ユーザー名 ia7ck
投稿日時 2018-11-24 15:36:45
言語 C++14
状態 Accepted
得点 400
ソースコード長 1100 Byte
最大実行時間 450 ms
最大メモリ使用量 47588 KB

セット

セット 得点 Cases
1 ALL 400 / 400 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
input01.in AC 411 ms 47452 KB
1
input02.in AC 418 ms 47524 KB
1
input03.in AC 431 ms 47332 KB
1
input04.in AC 431 ms 47396 KB
1
input05.in AC 416 ms 47332 KB
1
input06.in AC 425 ms 47396 KB
1
input07.in AC 435 ms 47456 KB
1
input08.in AC 422 ms 47396 KB
1
input09.in AC 423 ms 47460 KB
1
input10.in AC 427 ms 47516 KB
1
input11.in AC 421 ms 47456 KB
1
input12.in AC 427 ms 47520 KB
1
input13.in AC 423 ms 47588 KB
1
input14.in AC 450 ms 47396 KB
1
input15.in AC 422 ms 47460 KB
1
input16.in AC 436 ms 47392 KB
1
input17.in AC 424 ms 47328 KB
1
input18.in AC 421 ms 47396 KB
1
input19.in AC 421 ms 47460 KB
1
input20.in AC 427 ms 47396 KB
1
sample.in AC 434 ms 47464 KB
1