TopcoderArchive
Archive
Algorithm problem

MatrixConstructor

Problem statement, definition, constraints, and public examples.

Problem Statement

Let's call a rectangular matrix monotonous if in every row and every column each element is greater than the previous one (ai,j < ai + 1,j and ai,j < ai,j + 1). Given four ints - n, m, row and col - return a monotonous rectangular matrix with n rows and m columns which contains all integers between 0 and (n*m - 1) as elements, and the element (row, col) is as small as possible. All indices are 0-based. If there are several solutions, return the lexicographically smallest (see notes).

For example, if n = 4, m = 5, row = 3 and col = 3, the matrix is:
0 1 2 3 16
4 5 6 7 17
8 9 10 11 18
12 13 14 15 19

Return the matrix as a String[] where the i-th element represents the i-th row. Each row should be represented as a single space separated list of the values within the row.

Definition

Class:
MatrixConstructor
Method:
construct
Parameters:
int, int, int, int
Returns:
String[]
Method signature:
String[] construct(int n, int m, int row, int col)
(be sure your method is public)

Notes

  • The rectangular nxm matrix A is lexicographically smaller than the matrix B if and and only if the vector (A0,0, A0,1, ..., A0,m-1, A1,0, A1,1, ..., A1,m-1, ..., An-1,0, An-1,1, ..., An-1,m-1) is lexicographically smaller than the vector (B0,0, B0,1, ..., B0,m-1, B1,0, B1,1, ..., B1,m-1, ..., Bn-1,0, Bn-1,1, ..., Bn-1,m-1).

Constraints

  • n will be between 1 and 10, inclusive.
  • m will be between 1 and 10, inclusive.
  • row will be between 0 and n-1, inclusive.
  • col will be between 0 and m-1, inclusive.

Examples

  1. 4
    5
    3
    3
    Returns: {"0 1 2 3 16", "4 5 6 7 17", "8 9 10 11 18", "12 13 14 15 19" }
    This test is from the problem statement.
  2. 4
    5
    2
    1
    Returns: {"0 1 6 7 8", "2 3 9 10 11", "4 5 12 13 14", "15 16 17 18 19" }
  3. 1
    1
    0
    0
    Returns: {"0" }
  4. 10
    10
    9
    9
    Returns: {"0 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 76 77 78 79", "80 81 82 83 84 85 86 87 88 89", "90 91 92 93 94 95 96 97 98 99" }
Back to all problems