Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const val MOD = 1e6.toInt() + 7
- fun calc(dp: Array<IntArray>, i: Int = dp.size - 1, q: Int = dp[0].size - 1) = when {
- i < 0 || q < 0 || i > dp.size - 1 || q > dp[0].size - 1 -> 0
- dp[i][q] != -1 -> dp[i][q]
- else -> {
- dp[i][q] = (calc(dp, i - 2, q - 1) +
- calc(dp, i - 2, q + 1) +
- calc(dp, i - 1, q - 2) +
- calc(dp, i + 1, q - 2)) % MOD
- dp[i][q]
- }
- }
- fun main() = readLine()!!.split(' ').map { it.toInt() }.let { args ->
- Array(args[0]) { IntArray(args[1]) { -1 } }.let { dp ->
- dp[0][0] = 1
- print(calc(dp))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement