Submission #00102
ソースコード
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #include<bits/stdc++.h> using namespace std; using int64= long long ; struct Combination { int mod; vector< int64_t > mfact, rfact; Combination( int sz, int mod) : mfact(sz + 1), rfact(sz + 1), mod(mod) { mfact[0] = 1; for ( int i = 1; i < mfact.size(); i++) { mfact[i] = mfact[i - 1] * i % mod; } rfact[sz] = inv(mfact[sz]); for ( int i = sz - 1; i >= 0; i--) { rfact[i] = rfact[i + 1] * (i + 1) % mod; } } int64_t fact( int k) const { return (mfact[k]); } int64_t pow (int64_t x, int64_t n) const { int64_t ret = 1; while (n > 0) { if (n & 1) (ret *= x) %= mod; (x *= x) %= mod; n >>= 1; } return (ret); } int64_t inv(int64_t x) const { return ( pow (x, mod - 2)); } int64_t P( int n, int r) const { if (r < 0 || n < r) return (0); return (mfact[n] * rfact[n - r] % mod); } int64_t C( int p, int q) const { if (q < 0 || p < q) return (0); return (mfact[p] * rfact[q] % mod * rfact[p - q] % mod); } int64_t H( int n, int r) const { if (n < 0 || r < 0) return (0); return (r == 0 ? 1 : C(n + r - 1, r)); } }; const int mod = 1e9 + 7; int main() { int W, H, N; cin >> W >> H >> N; --W, --H; int64 mul = 1; int X = 0, Y = 0; Combination uku(H + W, mod); while (N--) { int NX, NY; cin >> NX >> NY; (mul *= uku.C(NX - X + NY - Y, NX - X)) %= mod; X = NX; Y = NY; } (mul *= uku.C(H - X + W - Y, W - X)) %= mod; cout << mul << endl; } |
ステータス
項目 | データ |
---|---|
問題 | 0006 - 寄り道 |
ユーザー名 | ei1333 |
投稿日時 | 2018-11-24 14:31:14 |
言語 | C++11 |
状態 | Accepted |
得点 | 400 |
ソースコード長 | 1572 Byte |
最大実行時間 | 83 ms |
最大メモリ使用量 | 31920 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 400 / 400 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
input01.in | AC | 19 ms | 600 KB |
1
|
input02.in | AC | 18 ms | 668 KB |
1
|
input03.in | AC | 17 ms | 604 KB |
1
|
input04.in | AC | 22 ms | 800 KB |
1
|
input05.in | AC | 26 ms | 644 KB |
1
|
input06.in | AC | 21 ms | 748 KB |
1
|
input07.in | AC | 29 ms | 1676 KB |
1
|
input08.in | AC | 31 ms | 1628 KB |
1
|
input09.in | AC | 24 ms | 3620 KB |
1
|
input10.in | AC | 32 ms | 3544 KB |
1
|
input11.in | AC | 46 ms | 16008 KB |
1
|
input12.in | AC | 49 ms | 16092 KB |
1
|
input13.in | AC | 36 ms | 9136 KB |
1
|
input14.in | AC | 37 ms | 9080 KB |
1
|
input15.in | AC | 83 ms | 31808 KB |
1
|
input16.in | AC | 80 ms | 31880 KB |
1
|
input17.in | AC | 76 ms | 31828 KB |
1
|
input18.in | AC | 81 ms | 31772 KB |
1
|
input19.in | AC | 74 ms | 31844 KB |
1
|
input20.in | AC | 81 ms | 31920 KB |
1
|
sample.in | AC | 20 ms | 640 KB |
1
|