You are given two integers m and n representing the number of rows and columns of a grid, respectively.
The cost to enter cell (i, j) is defined as (i + 1) * (j + 1).
You are also given a 2D integer array waitCost where waitCost[i][j] defines the cost to wait on that cell.
The path will always begin by entering cell (0, 0) on move 1 and paying the entrance cost.
At each step, you follow an alternating pattern:
waitCost[i][j] during that second.Return the minimum total cost required to reach (m - 1, n - 1).
Example 1:
Input: m = 1, n = 2, waitCost = [[1,2]]
Output: 3
Explanation:
The optimal path is:
(0, 0) at second 1 with entry cost (0 + 1) * (0 + 1) = 1.(0, 1) with entry cost (0 + 1) * (1 + 1) = 2.Thus, the total cost is 1 + 2 = 3.
Example 2:
Input: m = 2, n = 2, waitCost = [[3,5],[2,4]]
Output: 9
Explanation:
The optimal path is:
(0, 0) at second 1 with entry cost (0 + 1) * (0 + 1) = 1.(1, 0) with entry cost (1 + 1) * (0 + 1) = 2.(1, 0), paying waitCost[1][0] = 2.(1, 1) with entry cost (1 + 1) * (1 + 1) = 4.Thus, the total cost is 1 + 2 + 2 + 4 = 9.
Example 3:
Input: m = 2, n = 3, waitCost = [[6,1,4],[3,2,5]]
Output: 16
Explanation:
The optimal path is:
(0, 0) at second 1 with entry cost (0 + 1) * (0 + 1) = 1.(0, 1) with entry cost (0 + 1) * (1 + 1) = 2.(0, 1), paying waitCost[0][1] = 1.(1, 1) with entry cost (1 + 1) * (1 + 1) = 4.(1, 1), paying waitCost[1][1] = 2.(1, 2) with entry cost (1 + 1) * (2 + 1) = 6.Thus, the total cost is 1 + 2 + 1 + 4 + 2 + 6 = 16.
Constraints:
1 <= m, n <= 1052 <= m * n <= 105waitCost.length == mwaitCost[0].length == n0 <= waitCost[i][j] <= 105