Statistics

Problem Statement for "Mountains"

Problem Statement

Manao is developing a simple 2-D computer game. The screen of the game is H pixels high and W pixels wide (1 <= H, W <= 50).

Manao is currently working on the background which should be filled with N mountains (1 <= N <= 10). The mountains are numbered from 0 to N-1. The contents of the screen are stored in an array of characters pix where pix[x, y] gives the contents of the pixel at column x, row y. Both indices are 0-based. Columns are numbered left to right and rows are numbered bottom to top. The parts of the screen where the i-th mountain is visible are denoted by digit i. Character '.' means that the corresponding pixel is not covered by any mountains.

The i-th (0-based index) mountain is described by its peak position (X[i], Y[i]), 0 <= X[i] < W, 0 <= Y[i] < H. In order to draw the mountains, the following pseudocode is used:

Fill all elements of pix with '.' characters.
For 0 <= i < N:
  For 0 <= x < W:
    For 0 <= y <= Y[i] - |x - X[i]|:
      pix[x, y] := i + '0'

For example, consider three mountains with peaks at (1, 1), (2, 2) and (4, 1). Once these mountains are drawn on a screen with H = 3, W = 6, the resulting picture will look as follows:
..1...
.1112.
111222

Manao has recently filled the background with N mountains as described above. After that he wrote down the height of each mountain. Also, for each column he wrote down which mountains were visible at that column. You are given a int[] heights containing N elements. Element i of heights gives the height of the i-th mountain in pixels (which is equal to Y[i] + 1). You are also given a String[] visibility. It contains N elements and each element is W characters long. The j-th character of visibility[i] is equal to 'X' if the i-th mountain was visible at column j of the screen and '-' otherwise. In other words, the j-th character of visibility[i] is equal 'X' if and only if at least one pixel of column j contained digit i after all mountains were drawn.

Count the number of sequences of exactly N mountains that match the information given by heights and visibility. Return this number modulo 1,000,000,009. It is guaranteed that there exists at least one such sequence.

Definition

Class:
Mountains
Method:
countPlacements
Parameters:
int[], String[]
Returns:
int
Method signature:
int countPlacements(int[] heights, String[] visibility)
(be sure your method is public)

Notes

  • The value of H is not directly given in the input parameters. For the purposes of this problem, you can assume that H is equal to the largest element of heights.

Constraints

  • heights will contain between 1 and 10 elements, inclusive.
  • Each element of heights will be between 1 and 50, inclusive.
  • visibility will contain the same number of elements as heights.
  • Each element of visibility will be between 1 and 50 characters long, inclusive.
  • All elements of visibility will be of the same length.
  • Each element of visibility will consist of 'X' and '-' characters only.
  • At least one sequence of mountains matching the given information will exist.

Examples

  1. {2, 3, 2}

    {"------", "XXXX--", "---XXX"}

    Returns: 4

    The given information corresponds to the three mountains from the problem statement. Mountains 1 and 2 are uniquely determined. Mountain 0 can have the peak in each column from 1 to 4.

  2. {4, 3, 4}

    {"XXXXX--------", "----------XXX", "----XXXXXXX--"}

    Returns: 4

    The four possible mountain sequences are: (2, 3), (10, 2), (7, 3) (2, 3), (11, 2), (7, 3) (3, 3), (10, 2), (7, 3) (3, 3), (11, 2), (7, 3) After drawing these sequences, the following pictures are obtained: ..0....2.....      ..0....2.....      ...0...2.....      ...0...2..... .000..222.1..      .000..222..1.      ..000.222.1..      ..000.222..1. 000002222211.      0000022222111      .00002222211.      .000022222111 0000222222211      0000222222211      0000222222211      0000222222211

  3. {13, 2, 3, 2}

    {"XXXXXXXXX", "-XXX-----", "----XXXXX", "-----XXX-"}

    Returns: 9

  4. {8, 2, 9, 3, 10}

    {"X------", "-------", "------X", "-------", "XXXXXXX"}

    Returns: 98

  5. {20, 20, 20, 20, 20, 20, 45, 50, 49, 50}

    {"-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "------------XXXXXXX", "XXXXXXX------------", "XXXXXXXXXXXXXXXXXXX"}

    Returns: 973726691

  6. {19,17,16,17,16,16,16}

    {"-------XXXXX---", "-------------XX", "-----------XXXX", "XXX------------", "XXXXX----------", "--------XXXXXXX", "XXXXXXXXXXXXXXX"}

    Returns: 16

  7. {18,19,19,19,18,17,18,18,16}

    {"XXX------------", "---XXXX--------", "-------------XX", "----------XX---", "-----------XXXX", "XXX------------", "---------XXXXXX", "-----XXXXXXXXXX", "XXXXXXXXXXXXXXX"}

    Returns: 32

  8. {42, 40, 47, 49, 48, 50, 48, 48, 47, 50}

    {"--------------------------------------------------", "--------------------------------------------------", "XXXXX---------------------------------------------", "--------------------------------------------XXXXXX", "XXXXXXXXXX----------------------------------------", "XXXXXXXXXXXXXXXX----------------------------------", "--------------------------------------XXXXXXXXXXXX", "--------------------------------------------------", "-----------------------------XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 2147405

  9. {48, 47, 49, 45, 48, 47, 47, 47, 46, 48}

    {"--------------------------------------------------", "--------------------------------------------------", "XXXXXXX-------------------------------------------", "--------------------------------------------------", "XXXXXXXXXXXXXX------------------------------------", "XXXXXXXXXXXXXXXXXXXXXX----------------------------", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-------------------", "---------------------------------------------XXXXX", "-----------------------------------------XXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 496271

  10. {50, 47, 48, 49, 49, 49, 49, 49, 50, 49}

    {"----XXXXX-----------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------XXXXXX", "------------------------------------XXXXXXXXXXXXXX", "----------------------------XXXXXXXXXXXXXXXXXXXXXX", "----------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXX------------------------------------------", "---------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 74907

  11. {1, 1, 1, 1, 1, 1, 1, 1, 1, 50}

    {"--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 121093759

  12. {50, 46, 43, 38, 34, 31, 28, 22, 18, 14}

    {"XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX"}

    Returns: 191234210

  13. {50, 50, 50, 50, 50}

    {"XX-----------------------", "---------------------XXXX", "XXXXXXXXX----------------", "-----------------XXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 29

  14. {50, 50, 50, 50, 50}

    {"XX-----------------------", "---------------------XXXX", "XXXX---------------------", "--------------XXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 1

  15. {50, 50}

    {"--------------------------------------------------", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 50

  16. {50, 50, 50, 50, 50, 50, 50, 50, 50, 50}

    {"XX------------------------------------------------", "XXXX----------------------------------------------", "-----------------------------------------------XXX", "XXXXXXX-------------------------------------------", "XXXXXXXXXXXXX-------------------------------------", "XXXXXXXXXXXXXXXXXXX-------------------------------", "--------------------------------------------XXXXXX", "-----------------------------------XXXXXXXXXXXXXXX", "-------------------------XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 384

  17. {11,45,28,19,3,28,37,25,50}

    {"---------------------------------------------","---------------------------------------------","---------------------------------------------","---------------------------------------------","---------------------------------------------","---------------------------------------------","XXXXXXXXXX-----------------------------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 619801388

  18. {45,38,32,4,22,19,7}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXX---------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------","-------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------","-----------------XXXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------XXXXXXXXXX"}

    Returns: 1032

  19. {26,6,18,5,34,2,5}

    {"----------------------------------------","----------------------------------------","----------------------------------------","---------------------------------XXX----","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","--------------------------------XXX-----","-----------------------------------XXXXX"}

    Returns: 6479

  20. {11}

    {"-----------------------XXXXXXXXXXXXXXXX"}

    Returns: 1

  21. {31,42}

    {"---------------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 19

  22. {15,48,21,8,39,24,16}

    {"------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------","------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---","XXXXXXXXXXXXXXXXXX------------------"}

    Returns: 14243820

  23. {38,45,36,21,42,32,26}

    {"------------------------------------","--------------XXXXXXXXXXXXXXXXXXXXXX","-------------------------XXXXXXXXXXX","------------------------------------","XXXXXXXXXXXXXXXXXX------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 6120

  24. {46,14,14,38,7,20,33}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------------","------------------------------------------","-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------------------------------XX","------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 3762612

  25. {2,5,5,20,7,6,24,42,34}

    {"-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXX------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 728152763

  26. {26,12}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------XXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 18

  27. {43,36,50,50,30,16}

    {"XXXXXXXXXXXXXXX------------------------","XXXXXXXXXX-----------------------------","------------------------------XXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------XXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 480

  28. {10,11,27,34,30,50,49,40,25}

    {"---------------------------------------","---------------------------------------","---------------------------------------","---------------------------------------","---------------------------------------","-----------------------XXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------"}

    Returns: 311531415

  29. {9,44,21,50,20,14}

    {"-------------------------------------------------","------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------","------------------------------------XXXXXXXXXXXXX","----------------XXXXXXXXXXXXXXXXXXXXXXXXXXX------"}

    Returns: 5929

  30. {30,24}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 176

  31. {43,29,46,27,36,38,42}

    {"---------------XXXXXXX--------------------------","------------------------------------------------","-----------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------------------","-----------------------XXXXXXXXXXXXXXXXXXXXXXXXX","----------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----"}

    Returns: 13873

  32. {7,22,31,34,47,28,41,6,40}

    {"-------------------------------------------","-------------------------------------------","-------------------------------------------","-------------------------------------------","-----------------XXXXXXXXXXXXXXXXXXXXX-----","-------------------------------------------","--------------------------XXXXXXXXXXXXXXXXX","-------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 565718445

  33. {4,31,19,31,9,38}

    {"-----------------------------------","------------------------XXXXXXXXXXX","-----------------------------------","-----------------------------------","-----------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 12186300

  34. {23,14,49,41,15,41}

    {"------------------------------------------------","------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-------------------","----------------------------XXXXXXXXXXXXXXXXXXXX","--------------------------------------------XXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 73728

  35. {3,46,50}

    {"--------------------------------------","-----------XXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 494

  36. {27,21,42,1,17}

    {"---------------------------------------","---------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------------","XXXXXXXXXXXXXXXXXXXXXX-----------------"}

    Returns: 583550

  37. {29,47,39,23}

    {"------------------------------------------------","-------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------"}

    Returns: 77

  38. {26,49,5,34,13,46,35,28}

    {"-----------------------------------","--------------XXXXXXXXXXXXXXXXXXXXX","-----------------------------------","-----------------------------------","-----------------------------------","XXXXXXXXXXXXXXXXXXXX---------------","----------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 45704750

  39. {35,25,45,24,40,1,16,28,15,44}

    {"--------------XXXXX-------------------------","--------------------------------------------","--------------------------------XXXXXXXXXXXX","--------------------------------------------","XXXXXXXXXXXXXXXX----------------------------","--------------------------------------------","--------------------------------------------","--------------------------------------------","--------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 199451580

  40. {45,43,30}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXX----","XXXXXXXXXXXXXXXXXXXXXXXXXXX-----","-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 4

  41. {17,22,22,12}

    {"----------------XXXXXXXX--------------------","-------------------XXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXX-----------------","XXXXXXXXXXXXXXXXXXXXXX----------------------"}

    Returns: 3

  42. {19,12,35,26,4,39,9,40,27}

    {"-------------------------------------------------","-------------------------------------------------","-------------------------------------------------","XXXXXXXXX----------------------------------------","-------------------------------------------------","------------------------------XXXXXXXXXXXXXXXXXXX","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----------","-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 670952247

  43. {42,14,32,27,44,25}

    {"XXXXXXX------------------------","-------------------------------","-------------------------------","-----------------------------XX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 95418

  44. {2,9,33,43,43,28}

    {"-----------------------------------","-----------------------------------","-----------------------------------","---------------------XXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----"}

    Returns: 814625

  45. {27,22,46,10}

    {"----------------------------------","----------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXX----------------------"}

    Returns: 30124

  46. {17,16,40,39}

    {"-------------------------------------------------","-------------------------------------------------","--------------------------------XXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 71775

  47. {35,34,2,20,33,12}

    {"-----------------------------------XXXXXXXXXXXX","-------------------------XXXXXXXXXXXXXXXXXXXXXX","-----------------------------------------------","-----------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXX-------------------------------"}

    Returns: 48222

  48. {18,32,25,43,9}

    {"--------------------------------------------","--------------------------------------------","XXXXXXXX------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-XXXXXXXXXXXXXXXXX--------------------------"}

    Returns: 15995

  49. {19,29,47,12,9,33}

    {"-----------------------------------------","-----------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXX---------------","-----------------------------------------","-----------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 22690876

  50. {38}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 28

  51. {46,22,20,32,29}

    {"----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------","------------------------------------","XXXXXXXXXXXXXXX---------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 14534

  52. {23,17,42,21,30,19,7,23}

    {"-------------------------------","-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------------","XXXXXXXXXX---------------------","-------------------------------","-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 260590698

  53. {17,46,18}

    {"-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 4795

  54. {28,1}

    {"----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","---------X----------------------------"}

    Returns: 1

  55. {25,2,45}

    {"-------------------------------------XXXXXX","-------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 516

  56. {23,2,31,18,46,24,8}

    {"---------------------------------","---------------------------------","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXX-----------","------------------XXXXXXXXXXXXXXX"}

    Returns: 42065694

  57. {17,10,16,23}

    {"--------------------XXXXXXXXXXX","-------------------------------","-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 4005

  58. {47,28,3,29,37,16,1}

    {"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXX----------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--","-------------------------X-------"}

    Returns: 90255

  59. {34,43,10,23,18,21}

    {"--------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXX--------------------------------------------","--------------------XXXXXXXXXXXXXX----------------","-XXXXXXXXXXXXXXXXXXXXXXXXXX-----------------------","-------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 627

  60. {41,41,22,4,17}

    {"----------------------------XXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","------------------------XXXXXXXXXXXXXXXXXXXX","--------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------"}

    Returns: 208

  61. {9,50,42,25}

    {"------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","-------------XXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-"}

    Returns: 144

  62. {50,22,42,11,15,42,3}

    {"---------------------------XXXXXXXXXXXXXXXXXXXXXX","-------------------------------------------------","-----------------------XXXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------------------------------","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","--------------------------XXXXX------------------"}

    Returns: 1687756

  63. {40,26,28,39,33,10}

    {"------------XXXXXXXXXXXXXXXXXXX--------------","---------------------------------------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXX----------------------","----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-----------------------------XXXXXXXXXXXXXXXX"}

    Returns: 891

  64. {3,26,46,33}

    {"--------------------------------------------","--------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 834592

  65. {39,32,22,19}

    {"XXXXXXXXXXXXXXXXXXXXXXXX-------","XXXXXXXXXXXXXXXXXXXXX----------","---------------------------XXXX","-------XXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 4

  66. {15,9,28,38,19}

    {"-----------------------------XXXX","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXX----------"}

    Returns: 3646

  67. {5,24,20,50,33,37,6,19,8,37}

    {"-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------XXXXXXXXXXXXXXXXXXXXXXXXXX-----","-----------------------------------------------","-----------------------------------------------","-------------------------------XXXXXXXXXXXXXXXX","-----------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------"}

    Returns: 878342580

  68. {23,6,10,16,46,10,34,50,32,1}

    {"-------------------------------------------------","-------------------------------------------------","-------------------------------------------------","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------------","-------------------------------------------------","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-----------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------------------X-----------"}

    Returns: 177325403

  69. {9,37,22,38,5,2,19,16,20,42}

    {"---------------------------------","XXXXXXXXXXXXXXXXXX---------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXX---------","---------------------------------","---------------------------------","---------------------------------","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 494890282

  70. {48,43,16,41,36,42,9,32,24,26}

    {"XXXXXXXXXXXXXXXXXXXXXXXXX-------------------","------------------------------------XXXXXXXX","--------------------------------------------","----XXXXXXXXXXXXXXXXXXX---------------------","--------------------------------------------","------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","--------------------------------------------","XXXXXXXXXXXXXXXXX---------------------------","--XXXXXXXXXXXXXXXXXXXXXXXX------------------","---XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 402688

  71. {38,45,5,34,18,17,6,45,33,38}

    {"----------------------------------------XXXXXXXXXX","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXX--------------------------","-----------------------------------------XXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 837499928

  72. {10,44,39,15,14,12,4,20,27,20}

    {"----------------------------","----------------XXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------------------","----------------------------","----------------------------","----------------------------","----------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 7721926

  73. {31,19,33,9,44,42,10,11,27,13}

    {"---------------------------------------------","---------------------------------------------","----------------------XXXXXXX----------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXX---------------------","--------------------XXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----","---XXXXXXXXXXXXXXXXXXXXXXXXX-----------------"}

    Returns: 241056000

  74. {43,24,1,49,48,49,2,6,27,23}

    {"-------------------------","-------------------------","-------------------------","XXXXX--------------------","XXXXXXXXXXX--------------","XXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------","-------------------------","------------XXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 20703098

  75. {7,48,32,41,6,27,34,45,29,41}

    {"------------------------------","XXXXXXXXXXXXXXX---------------","------------------------------","----------------------------XX","------------------------------","------------------------------","------------------------------","------------XXXXXXXXXXXXXXXXXX","------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 778079946

  76. {31,40,8,36,38,43,33,30,40,28}

    {"------------------------","------------------------","------------------------","------------------------","------------------------","-----XXXXXXXXXXXXXXXXXXX","XXXXXX------------------","------------------------","XXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 844019397

  77. {44,49,48,48,48,48,48,47,48,48}

    {"--------------------------------------------------","XXXXXX--------------------------------------------","------------------------------------------XXXXXXXX","XXXXXXXXXXX---------------------------------------","XXXXXXXXXXXXXXXX----------------------------------","------------------------------------XXXXXXXXXXXXXX","-------------------------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX------------------------------","--------------------------XXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 40442

  78. {33,49,49,48,48,49,48,48,48,48}

    {"--------------------------------------------------","XXXXXX--------------------------------------------","-------------------------------------------XXXXXXX","XXXXXXXXXXX---------------------------------------","XXXXXXXXXXXXXXXX----------------------------------","------------------------------------XXXXXXXXXXXXXX","-------------------------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXX-----------------------------","--------------------------XXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

    Returns: 45200

  79. {20, 20, 20, 20, 20, 20, 45, 50, 49, 50 }

    {"-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "------------XXXXXXX", "XXXXXXX------------", "XXXXXXXXXXXXXXXXXXX" }

    Returns: 973726691

  80. {4, 3, 4 }

    {"XXXXX--------", "----------XXX", "----XXXXXXX--" }

    Returns: 4

  81. {50, 46, 42, 38, 34, 30, 26, 22, 18, 14 }

    {"XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX" }

    Returns: 243093525

  82. {50, 45, 40, 35, 30, 25, 20, 15, 10, 5 }

    {"XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "--XXXXXXXXX--" }

    Returns: 115622639


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: