Submission #3402391
Source Code Expand
class Combination def initialize(n, mod) @mod = mod create_fact_mod(n) create_seq_inv_mod(n) create_fact_inv_mod(n) end def create_fact_mod(num_max) @fmod = Array.new(num_max + 1) @fmod[0] = 1 @fmod[1] = 1 (2..num_max).each do |i| @fmod[i] = (@fmod[i - 1] * i) % @mod end end def create_seq_inv_mod(num_max) @simod = Array.new(num_max + 1) @simod[0] = 1 @simod[1] = 1 (2..num_max).each do |i| @simod[i] = (@mod - @mod / i) * @simod[@mod % i] % @mod end end def create_fact_inv_mod(num_max) @fimod = Array.new(num_max + 1) @fimod[0] = 1 @fimod[1] = 1 (2..num_max).each do |i| @fimod[i] = (@fimod[i - 1] * @simod[i]) % @mod end end def comb_mod(n, k) @fmod[n] * @fimod[n - k] * @fimod[k] % @mod end def perm_mod(n, k) @fmod[n] * @fimod[n - k] % @mod end end H, W, A, B = gets.split.map(&:to_i) M = [H - A, W - B].min mod = 10**9 + 7 ans = 0 comb = Combination.new(H + W, mod) M.times do |i| h1 = H - A - i - 1 w1 = B + i ans += comb.comb_mod(h1 + w1, h1) * comb.comb_mod(H - h1 + W - w1 - 2, H - h1 - 1) ans %= mod end puts ans
Submission Info
Submission Time | |
---|---|
Task | D - Iroha and a Grid |
User | mosmos21 |
Language | Ruby (2.3.3) |
Score | 400 |
Code Size | 1227 Byte |
Status | AC |
Exec Time | 190 ms |
Memory | 6524 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
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 | 7 ms | 1788 KB |
subtask0_02.txt | AC | 7 ms | 1788 KB |
subtask0_03.txt | AC | 95 ms | 6524 KB |
subtask0_04.txt | AC | 145 ms | 6524 KB |
subtask1_01.txt | AC | 7 ms | 1788 KB |
subtask1_02.txt | AC | 7 ms | 1788 KB |
subtask1_03.txt | AC | 7 ms | 1788 KB |
subtask1_04.txt | AC | 7 ms | 1788 KB |
subtask1_05.txt | AC | 7 ms | 1788 KB |
subtask1_06.txt | AC | 7 ms | 1788 KB |
subtask1_07.txt | AC | 7 ms | 1788 KB |
subtask1_08.txt | AC | 7 ms | 1788 KB |
subtask1_09.txt | AC | 7 ms | 1788 KB |
subtask1_10.txt | AC | 7 ms | 1788 KB |
subtask1_max.txt | AC | 7 ms | 1788 KB |
subtask2_01.txt | AC | 18 ms | 2172 KB |
subtask2_02.txt | AC | 16 ms | 2172 KB |
subtask2_03.txt | AC | 12 ms | 2044 KB |
subtask2_04.txt | AC | 21 ms | 2172 KB |
subtask2_05.txt | AC | 15 ms | 2172 KB |
subtask2_06.txt | AC | 190 ms | 6524 KB |
subtask2_07.txt | AC | 105 ms | 6524 KB |
subtask2_08.txt | AC | 156 ms | 6396 KB |
subtask2_09.txt | AC | 137 ms | 6396 KB |
subtask2_10.txt | AC | 140 ms | 6524 KB |
subtask2_max.txt | AC | 27 ms | 2300 KB |