solution: /submissions/accepted/solution.cpp version: 2025-12 # use this version of the generators framework #test_group.yaml: # One or more of: # case_sensitive # space_change_sensitive # float_absolute_tolerance eps # float_relative_tolerance eps # float_tolerance eps #output_validator_args: data: sample: data: - '': # This input isn't visible to teams anywhere, right? in: | 0 1 BLOCK 0 interaction: | >9 7 <10 6 >9 6 <9 8 >8 7 <10 7 >10 8 <8 6 >11 9 <0 0 in.download: '' ans.download: '' secret: data: - dr_m2_dc_m2_counter_1: { in: "-2 -2 COUNTER 1", ans: "" } - dr_m2_dc_m2_counter_2: { in: "-2 -2 COUNTER 2", ans: "" } - dr_m2_dc_m2_counter_3: { in: "-2 -2 COUNTER 3", ans: "" } - dr_m2_dc_m2_weird_1: { in: "-2 -2 WEIRD 1", ans: "" } - dr_m2_dc_m2_weird_2: { in: "-2 -2 WEIRD 2", ans: "" } - dr_m2_dc_m2_weird_3: { in: "-2 -2 WEIRD 3", ans: "" } - dr_m2_dc_m2_block_1: { in: "-2 -2 BLOCK 1", ans: "" } - dr_m2_dc_m2_block_2: { in: "-2 -2 BLOCK 2", ans: "" } - dr_m2_dc_m2_block_3: { in: "-2 -2 BLOCK 3", ans: "" } - dr_m2_dc_m1_counter_1: { in: "-2 -1 COUNTER 1", ans: "" } - dr_m2_dc_m1_counter_2: { in: "-2 -1 COUNTER 2", ans: "" } - dr_m2_dc_m1_counter_3: { in: "-2 -1 COUNTER 3", ans: "" } - dr_m2_dc_m1_weird_1: { in: "-2 -1 WEIRD 1", ans: "" } - dr_m2_dc_m1_weird_2: { in: "-2 -1 WEIRD 2", ans: "" } - dr_m2_dc_m1_weird_3: { in: "-2 -1 WEIRD 3", ans: "" } - dr_m2_dc_m1_block_1: { in: "-2 -1 BLOCK 1", ans: "" } - dr_m2_dc_m1_block_2: { in: "-2 -1 BLOCK 2", ans: "" } - dr_m2_dc_m1_block_3: { in: "-2 -1 BLOCK 3", ans: "" } - dr_m2_dc_0_counter_1: { in: "-2 0 COUNTER 1", ans: "" } - dr_m2_dc_0_counter_2: { in: "-2 0 COUNTER 2", ans: "" } - dr_m2_dc_0_counter_3: { in: "-2 0 COUNTER 3", ans: "" } - dr_m2_dc_0_weird_1: { in: "-2 0 WEIRD 1", ans: "" } - dr_m2_dc_0_weird_2: { in: "-2 0 WEIRD 2", ans: "" } - dr_m2_dc_0_weird_3: { in: "-2 0 WEIRD 3", ans: "" } - dr_m2_dc_0_block_1: { in: "-2 0 BLOCK 1", ans: "" } - dr_m2_dc_0_block_2: { in: "-2 0 BLOCK 2", ans: "" } - dr_m2_dc_0_block_3: { in: "-2 0 BLOCK 3", ans: "" } - dr_m2_dc_1_counter_1: { in: "-2 1 COUNTER 1", ans: "" } - dr_m2_dc_1_counter_2: { in: "-2 1 COUNTER 2", ans: "" } - dr_m2_dc_1_counter_3: { in: "-2 1 COUNTER 3", ans: "" } - dr_m2_dc_1_weird_1: { in: "-2 1 WEIRD 1", ans: "" } - dr_m2_dc_1_weird_2: { in: "-2 1 WEIRD 2", ans: "" } - dr_m2_dc_1_weird_3: { in: "-2 1 WEIRD 3", ans: "" } - dr_m2_dc_1_block_1: { in: "-2 1 BLOCK 1", ans: "" } - dr_m2_dc_1_block_2: { in: "-2 1 BLOCK 2", ans: "" } - dr_m2_dc_1_block_3: { in: "-2 1 BLOCK 3", ans: "" } - dr_m2_dc_2_counter_1: { in: "-2 2 COUNTER 1", ans: "" } - dr_m2_dc_2_counter_2: { in: "-2 2 COUNTER 2", ans: "" } - dr_m2_dc_2_counter_3: { in: "-2 2 COUNTER 3", ans: "" } - dr_m2_dc_2_weird_1: { in: "-2 2 WEIRD 1", ans: "" } - dr_m2_dc_2_weird_2: { in: "-2 2 WEIRD 2", ans: "" } - dr_m2_dc_2_weird_3: { in: "-2 2 WEIRD 3", ans: "" } - dr_m2_dc_2_block_1: { in: "-2 2 BLOCK 1", ans: "" } - dr_m2_dc_2_block_2: { in: "-2 2 BLOCK 2", ans: "" } - dr_m2_dc_2_block_3: { in: "-2 2 BLOCK 3", ans: "" } - dr_m1_dc_m2_counter_1: { in: "-1 -2 COUNTER 1", ans: "" } - dr_m1_dc_m2_counter_2: { in: "-1 -2 COUNTER 2", ans: "" } - dr_m1_dc_m2_counter_3: { in: "-1 -2 COUNTER 3", ans: "" } - dr_m1_dc_m2_weird_1: { in: "-1 -2 WEIRD 1", ans: "" } - dr_m1_dc_m2_weird_2: { in: "-1 -2 WEIRD 2", ans: "" } - dr_m1_dc_m2_weird_3: { in: "-1 -2 WEIRD 3", ans: "" } - dr_m1_dc_m2_block_1: { in: "-1 -2 BLOCK 1", ans: "" } - dr_m1_dc_m2_block_2: { in: "-1 -2 BLOCK 2", ans: "" } - dr_m1_dc_m2_block_3: { in: "-1 -2 BLOCK 3", ans: "" } - dr_m1_dc_m1_counter_1: { in: "-1 -1 COUNTER 1", ans: "" } - dr_m1_dc_m1_counter_2: { in: "-1 -1 COUNTER 2", ans: "" } - dr_m1_dc_m1_counter_3: { in: "-1 -1 COUNTER 3", ans: "" } - dr_m1_dc_m1_weird_1: { in: "-1 -1 WEIRD 1", ans: "" } - dr_m1_dc_m1_weird_2: { in: "-1 -1 WEIRD 2", ans: "" } - dr_m1_dc_m1_weird_3: { in: "-1 -1 WEIRD 3", ans: "" } - dr_m1_dc_m1_block_1: { in: "-1 -1 BLOCK 1", ans: "" } - dr_m1_dc_m1_block_2: { in: "-1 -1 BLOCK 2", ans: "" } - dr_m1_dc_m1_block_3: { in: "-1 -1 BLOCK 3", ans: "" } - dr_m1_dc_0_counter_1: { in: "-1 0 COUNTER 1", ans: "" } - dr_m1_dc_0_counter_2: { in: "-1 0 COUNTER 2", ans: "" } - dr_m1_dc_0_counter_3: { in: "-1 0 COUNTER 3", ans: "" } - dr_m1_dc_0_weird_1: { in: "-1 0 WEIRD 1", ans: "" } - dr_m1_dc_0_weird_2: { in: "-1 0 WEIRD 2", ans: "" } - dr_m1_dc_0_weird_3: { in: "-1 0 WEIRD 3", ans: "" } - dr_m1_dc_0_block_1: { in: "-1 0 BLOCK 1", ans: "" } - dr_m1_dc_0_block_2: { in: "-1 0 BLOCK 2", ans: "" } - dr_m1_dc_0_block_3: { in: "-1 0 BLOCK 3", ans: "" } - dr_m1_dc_1_counter_1: { in: "-1 1 COUNTER 1", ans: "" } - dr_m1_dc_1_counter_2: { in: "-1 1 COUNTER 2", ans: "" } - dr_m1_dc_1_counter_3: { in: "-1 1 COUNTER 3", ans: "" } - dr_m1_dc_1_weird_1: { in: "-1 1 WEIRD 1", ans: "" } - dr_m1_dc_1_weird_2: { in: "-1 1 WEIRD 2", ans: "" } - dr_m1_dc_1_weird_3: { in: "-1 1 WEIRD 3", ans: "" } - dr_m1_dc_1_block_1: { in: "-1 1 BLOCK 1", ans: "" } - dr_m1_dc_1_block_2: { in: "-1 1 BLOCK 2", ans: "" } - dr_m1_dc_1_block_3: { in: "-1 1 BLOCK 3", ans: "" } - dr_m1_dc_2_counter_1: { in: "-1 2 COUNTER 1", ans: "" } - dr_m1_dc_2_counter_2: { in: "-1 2 COUNTER 2", ans: "" } - dr_m1_dc_2_counter_3: { in: "-1 2 COUNTER 3", ans: "" } - dr_m1_dc_2_weird_1: { in: "-1 2 WEIRD 1", ans: "" } - dr_m1_dc_2_weird_2: { in: "-1 2 WEIRD 2", ans: "" } - dr_m1_dc_2_weird_3: { in: "-1 2 WEIRD 3", ans: "" } - dr_m1_dc_2_block_1: { in: "-1 2 BLOCK 1", ans: "" } - dr_m1_dc_2_block_2: { in: "-1 2 BLOCK 2", ans: "" } - dr_m1_dc_2_block_3: { in: "-1 2 BLOCK 3", ans: "" } - dr_0_dc_m2_counter_1: { in: "0 -2 COUNTER 1", ans: "" } - dr_0_dc_m2_counter_2: { in: "0 -2 COUNTER 2", ans: "" } - dr_0_dc_m2_counter_3: { in: "0 -2 COUNTER 3", ans: "" } - dr_0_dc_m2_weird_1: { in: "0 -2 WEIRD 1", ans: "" } - dr_0_dc_m2_weird_2: { in: "0 -2 WEIRD 2", ans: "" } - dr_0_dc_m2_weird_3: { in: "0 -2 WEIRD 3", ans: "" } - dr_0_dc_m2_block_1: { in: "0 -2 BLOCK 1", ans: "" } - dr_0_dc_m2_block_2: { in: "0 -2 BLOCK 2", ans: "" } - dr_0_dc_m2_block_3: { in: "0 -2 BLOCK 3", ans: "" } - dr_0_dc_m1_counter_1: { in: "0 -1 COUNTER 1", ans: "" } - dr_0_dc_m1_counter_2: { in: "0 -1 COUNTER 2", ans: "" } - dr_0_dc_m1_counter_3: { in: "0 -1 COUNTER 3", ans: "" } - dr_0_dc_m1_weird_1: { in: "0 -1 WEIRD 1", ans: "" } - dr_0_dc_m1_weird_2: { in: "0 -1 WEIRD 2", ans: "" } - dr_0_dc_m1_weird_3: { in: "0 -1 WEIRD 3", ans: "" } - dr_0_dc_m1_block_1: { in: "0 -1 BLOCK 1", ans: "" } - dr_0_dc_m1_block_2: { in: "0 -1 BLOCK 2", ans: "" } - dr_0_dc_m1_block_3: { in: "0 -1 BLOCK 3", ans: "" } - dr_0_dc_1_counter_1: { in: "0 1 COUNTER 1", ans: "" } - dr_0_dc_1_counter_2: { in: "0 1 COUNTER 2", ans: "" } - dr_0_dc_1_counter_3: { in: "0 1 COUNTER 3", ans: "" } - dr_0_dc_1_weird_1: { in: "0 1 WEIRD 1", ans: "" } - dr_0_dc_1_weird_2: { in: "0 1 WEIRD 2", ans: "" } - dr_0_dc_1_weird_3: { in: "0 1 WEIRD 3", ans: "" } - dr_0_dc_1_block_1: { in: "0 1 BLOCK 1", ans: "" } - dr_0_dc_1_block_2: { in: "0 1 BLOCK 2", ans: "" } - dr_0_dc_1_block_3: { in: "0 1 BLOCK 3", ans: "" } - dr_0_dc_2_counter_1: { in: "0 2 COUNTER 1", ans: "" } - dr_0_dc_2_counter_2: { in: "0 2 COUNTER 2", ans: "" } - dr_0_dc_2_counter_3: { in: "0 2 COUNTER 3", ans: "" } - dr_0_dc_2_weird_1: { in: "0 2 WEIRD 1", ans: "" } - dr_0_dc_2_weird_2: { in: "0 2 WEIRD 2", ans: "" } - dr_0_dc_2_weird_3: { in: "0 2 WEIRD 3", ans: "" } - dr_0_dc_2_block_1: { in: "0 2 BLOCK 1", ans: "" } - dr_0_dc_2_block_2: { in: "0 2 BLOCK 2", ans: "" } - dr_0_dc_2_block_3: { in: "0 2 BLOCK 3", ans: "" } - dr_1_dc_m2_counter_1: { in: "1 -2 COUNTER 1", ans: "" } - dr_1_dc_m2_counter_2: { in: "1 -2 COUNTER 2", ans: "" } - dr_1_dc_m2_counter_3: { in: "1 -2 COUNTER 3", ans: "" } - dr_1_dc_m2_weird_1: { in: "1 -2 WEIRD 1", ans: "" } - dr_1_dc_m2_weird_2: { in: "1 -2 WEIRD 2", ans: "" } - dr_1_dc_m2_weird_3: { in: "1 -2 WEIRD 3", ans: "" } - dr_1_dc_m2_block_1: { in: "1 -2 BLOCK 1", ans: "" } - dr_1_dc_m2_block_2: { in: "1 -2 BLOCK 2", ans: "" } - dr_1_dc_m2_block_3: { in: "1 -2 BLOCK 3", ans: "" } - dr_1_dc_m1_counter_1: { in: "1 -1 COUNTER 1", ans: "" } - dr_1_dc_m1_counter_2: { in: "1 -1 COUNTER 2", ans: "" } - dr_1_dc_m1_counter_3: { in: "1 -1 COUNTER 3", ans: "" } - dr_1_dc_m1_weird_1: { in: "1 -1 WEIRD 1", ans: "" } - dr_1_dc_m1_weird_2: { in: "1 -1 WEIRD 2", ans: "" } - dr_1_dc_m1_weird_3: { in: "1 -1 WEIRD 3", ans: "" } - dr_1_dc_m1_block_1: { in: "1 -1 BLOCK 1", ans: "" } - dr_1_dc_m1_block_2: { in: "1 -1 BLOCK 2", ans: "" } - dr_1_dc_m1_block_3: { in: "1 -1 BLOCK 3", ans: "" } - dr_1_dc_0_counter_1: { in: "1 0 COUNTER 1", ans: "" } - dr_1_dc_0_counter_2: { in: "1 0 COUNTER 2", ans: "" } - dr_1_dc_0_counter_3: { in: "1 0 COUNTER 3", ans: "" } - dr_1_dc_0_weird_1: { in: "1 0 WEIRD 1", ans: "" } - dr_1_dc_0_weird_2: { in: "1 0 WEIRD 2", ans: "" } - dr_1_dc_0_weird_3: { in: "1 0 WEIRD 3", ans: "" } - dr_1_dc_0_block_1: { in: "1 0 BLOCK 1", ans: "" } - dr_1_dc_0_block_2: { in: "1 0 BLOCK 2", ans: "" } - dr_1_dc_0_block_3: { in: "1 0 BLOCK 3", ans: "" } - dr_1_dc_1_counter_1: { in: "1 1 COUNTER 1", ans: "" } - dr_1_dc_1_counter_2: { in: "1 1 COUNTER 2", ans: "" } - dr_1_dc_1_counter_3: { in: "1 1 COUNTER 3", ans: "" } - dr_1_dc_1_weird_1: { in: "1 1 WEIRD 1", ans: "" } - dr_1_dc_1_weird_2: { in: "1 1 WEIRD 2", ans: "" } - dr_1_dc_1_weird_3: { in: "1 1 WEIRD 3", ans: "" } - dr_1_dc_1_block_1: { in: "1 1 BLOCK 1", ans: "" } - dr_1_dc_1_block_2: { in: "1 1 BLOCK 2", ans: "" } - dr_1_dc_1_block_3: { in: "1 1 BLOCK 3", ans: "" } - dr_1_dc_2_counter_1: { in: "1 2 COUNTER 1", ans: "" } - dr_1_dc_2_counter_2: { in: "1 2 COUNTER 2", ans: "" } - dr_1_dc_2_counter_3: { in: "1 2 COUNTER 3", ans: "" } - dr_1_dc_2_weird_1: { in: "1 2 WEIRD 1", ans: "" } - dr_1_dc_2_weird_2: { in: "1 2 WEIRD 2", ans: "" } - dr_1_dc_2_weird_3: { in: "1 2 WEIRD 3", ans: "" } - dr_1_dc_2_block_1: { in: "1 2 BLOCK 1", ans: "" } - dr_1_dc_2_block_2: { in: "1 2 BLOCK 2", ans: "" } - dr_1_dc_2_block_3: { in: "1 2 BLOCK 3", ans: "" } - dr_2_dc_m2_counter_1: { in: "2 -2 COUNTER 1", ans: "" } - dr_2_dc_m2_counter_2: { in: "2 -2 COUNTER 2", ans: "" } - dr_2_dc_m2_counter_3: { in: "2 -2 COUNTER 3", ans: "" } - dr_2_dc_m2_weird_1: { in: "2 -2 WEIRD 1", ans: "" } - dr_2_dc_m2_weird_2: { in: "2 -2 WEIRD 2", ans: "" } - dr_2_dc_m2_weird_3: { in: "2 -2 WEIRD 3", ans: "" } - dr_2_dc_m2_block_1: { in: "2 -2 BLOCK 1", ans: "" } - dr_2_dc_m2_block_2: { in: "2 -2 BLOCK 2", ans: "" } - dr_2_dc_m2_block_3: { in: "2 -2 BLOCK 3", ans: "" } - dr_2_dc_m1_counter_1: { in: "2 -1 COUNTER 1", ans: "" } - dr_2_dc_m1_counter_2: { in: "2 -1 COUNTER 2", ans: "" } - dr_2_dc_m1_counter_3: { in: "2 -1 COUNTER 3", ans: "" } - dr_2_dc_m1_weird_1: { in: "2 -1 WEIRD 1", ans: "" } - dr_2_dc_m1_weird_2: { in: "2 -1 WEIRD 2", ans: "" } - dr_2_dc_m1_weird_3: { in: "2 -1 WEIRD 3", ans: "" } - dr_2_dc_m1_block_1: { in: "2 -1 BLOCK 1", ans: "" } - dr_2_dc_m1_block_2: { in: "2 -1 BLOCK 2", ans: "" } - dr_2_dc_m1_block_3: { in: "2 -1 BLOCK 3", ans: "" } - dr_2_dc_0_counter_1: { in: "2 0 COUNTER 1", ans: "" } - dr_2_dc_0_counter_2: { in: "2 0 COUNTER 2", ans: "" } - dr_2_dc_0_counter_3: { in: "2 0 COUNTER 3", ans: "" } - dr_2_dc_0_weird_1: { in: "2 0 WEIRD 1", ans: "" } - dr_2_dc_0_weird_2: { in: "2 0 WEIRD 2", ans: "" } - dr_2_dc_0_weird_3: { in: "2 0 WEIRD 3", ans: "" } - dr_2_dc_0_block_1: { in: "2 0 BLOCK 1", ans: "" } - dr_2_dc_0_block_2: { in: "2 0 BLOCK 2", ans: "" } - dr_2_dc_0_block_3: { in: "2 0 BLOCK 3", ans: "" } - dr_2_dc_1_counter_1: { in: "2 1 COUNTER 1", ans: "" } - dr_2_dc_1_counter_2: { in: "2 1 COUNTER 2", ans: "" } - dr_2_dc_1_counter_3: { in: "2 1 COUNTER 3", ans: "" } - dr_2_dc_1_weird_1: { in: "2 1 WEIRD 1", ans: "" } - dr_2_dc_1_weird_2: { in: "2 1 WEIRD 2", ans: "" } - dr_2_dc_1_weird_3: { in: "2 1 WEIRD 3", ans: "" } - dr_2_dc_1_block_1: { in: "2 1 BLOCK 1", ans: "" } - dr_2_dc_1_block_2: { in: "2 1 BLOCK 2", ans: "" } - dr_2_dc_1_block_3: { in: "2 1 BLOCK 3", ans: "" } - dr_2_dc_2_counter_1: { in: "2 2 COUNTER 1", ans: "" } - dr_2_dc_2_counter_2: { in: "2 2 COUNTER 2", ans: "" } - dr_2_dc_2_counter_3: { in: "2 2 COUNTER 3", ans: "" } - dr_2_dc_2_weird_1: { in: "2 2 WEIRD 1", ans: "" } - dr_2_dc_2_weird_2: { in: "2 2 WEIRD 2", ans: "" } - dr_2_dc_2_weird_3: { in: "2 2 WEIRD 3", ans: "" } - dr_2_dc_2_block_1: { in: "2 2 BLOCK 1", ans: "" } - dr_2_dc_2_block_2: { in: "2 2 BLOCK 2", ans: "" } - dr_2_dc_2_block_3: { in: "2 2 BLOCK 3", ans: "" } # You can re-use the input validator by symlinking it as `generator` in # this directory. Below is some inspiration for test cases. # # Use `-X` to set the value of variable `X`, as provided to the `read_*` functions. # Use `min` and `max` to set variables to their minimum and maximum # allowed values. #- min: generator {seed} -n min -k min -ai min #- max: generator {seed} -n max -k max -ai max # Leave a variable out to pick a uniform random value. #- random_a: generator {seed} -n max # Provide an explicit list of values: #- binary: generator {seed} -ai 0,1 # Provide probabilities for each value: #- mostly_0: generator {seed} -ai 0:0.99,1:0.01 # Uniform random values in range: #- small_a: generator {seed} -n 10 -ai 1..100 # Use a geometric distribution (see validation.h for more): #- geometric: generator {seed} -n 100 -k 123 -ai geometric(0.1) # Manual cases can be added like this: #- copied: # copy: manual/testcase # They should be written to somewhere inside generators/ and will be # copied into data/. # You can also dump them in data/secret and run `bt generate --add-unlisted`. # Typically, small test cases are more likely to find bugs/edge cases. # When the limit on n is 1000, do something like: #- small: generator {seed} -n 1 #- small: generator {seed} -n 2 #- small: generator {seed} -n 3 #- small: generator {seed} -n 7 #- small: generator {seed} -n 13 #- medium: generator {seed} -n 85 #- medium: generator {seed} -n 103 #- medium: generator {seed} -n 243 #- large: generator {seed} -n 991 #- large: generator {seed} -n 999 #- large: generator {seed} -n 1000 # Many testcases with the same parameter can be generated like this: #- large: # generate: generator {seed:1} -n 1000 # count: 10 testing_tool_test: include: - "secret" invalid_input: # Add invalid test cases to ensure that input_validators correctly rejects them. data: [] #invalid_test_case_input: # in: "" invalid_answer: # Add valid test cases with invalid answers to ensure that the answer_validators correctly rejects them. # (The output validator is also called with these) data: [] #invalid_test_case_answer: # in: "" # ans: "" invalid_output: # Add valid test cases with answer and invalid team output to ensure that the output_validator correctly rejects them. data: [] #invalid_test_case_output: # in: "" # ans: "" # out: "" valid_output: # Add valid test cases with answer and team output to ensure that the output_validator correctly accepts them. data: [] #valid_test_case_output: # in: "" # ans: "" # out: ""