Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Author - Saurav Kalsoor
- //House Renovation - KOTLIN
- import java.util.*
- import java.lang.*
- var sc: Scanner = Scanner(System.`in`)
- var area = 0
- fun main() {
- val n: Int = sc.nextInt()
- val m: Int = sc.nextInt()
- val q: Int = sc.nextInt()
- val a = Array(n) { IntArray(m) }
- for (i in 0 until n) {
- for (j in 0 until m) {
- a[i][j] = sc.nextInt()
- }
- }
- val queries = IntArray(q)
- for (i in queries.indices) {
- queries[i] = sc.nextInt()
- }
- val result = houseRenovation(n, m, q, a, queries)
- for (i in result.indices) {
- print(result[i].toString() + " ")
- }
- println()
- }
- fun dfs(a: Array<IntArray>, i: Int, j: Int, visited: Array<BooleanArray>) {
- if (visited[i][j]) return
- visited[i][j] = true
- area++
- if (a[i][j] and 1 == 0) {
- dfs(a, i, j - 1, visited)
- }
- if (a[i][j] and 2 == 0) {
- dfs(a, i + 1, j, visited)
- }
- if (a[i][j] and 4 == 0) {
- dfs(a, i, j + 1, visited)
- }
- if (a[i][j] and 8 == 0) {
- dfs(a, i - 1, j, visited)
- }
- }
- fun houseRenovation(n: Int, m: Int, q: Int, a: Array<IntArray>, queries: IntArray): IntArray {
- val visited = Array(n){BooleanArray(m)}
- // val a = Array(n) { IntArray(m) }
- for (i in 0 until n) {
- for (j in 0 until m) {
- visited[i][j] = false
- }
- }
- val hm: MutableMap<Int, Int> = HashMap<Int, Int>()
- for (i in 0 until n) {
- for (j in 0 until m) {
- if (visited[i][j] == false) {
- area = 0
- dfs(a, i, j, visited)
- hm.put(area, hm.getOrDefault(area, 0) + 1)
- }
- }
- }
- val result = IntArray(q)
- for (i in queries.indices) {
- if (hm.containsKey(queries[i])) {
- result[i] = hm[queries[i]]!!
- } else {
- result[i] = 0
- }
- }
- return result
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement