45 lines
1.6 KiB
Kotlin
45 lines
1.6 KiB
Kotlin
fun main() = with(System.`in`.bufferedReader()) {
|
|
val n = this.readLine().toInt()
|
|
var locations = Array(n * n) { 0 to 0 }
|
|
for (i in 0 until n) {
|
|
this.readLine().split(" ").map { it.toInt() }.forEachIndexed { j, v ->
|
|
locations[v - 1] = i to j
|
|
}
|
|
}
|
|
|
|
//
|
|
|
|
var boxLeftTop = locations[0].first to locations[0].second
|
|
var boxRightTop = locations[0].first to locations[0].second
|
|
var boxLeftDown = locations[0].first to locations[0].second
|
|
var boxRightDown = locations[0].first to locations[0].second
|
|
|
|
var cnt = 1
|
|
|
|
for (item in 1 until n * n) {
|
|
val row = locations[item].first
|
|
val col = locations[item].second
|
|
|
|
if (boxLeftTop.first <= row && boxLeftTop.second >= col) {
|
|
boxLeftTop = row to col
|
|
}
|
|
if (boxRightTop.first <= row && boxRightTop.second <= col) {
|
|
boxRightTop = row to col
|
|
}
|
|
if (boxLeftDown.first >= row && boxLeftDown.second >= col) {
|
|
boxLeftDown = row to col
|
|
}
|
|
if (boxRightDown.first >= row && boxRightDown.second <= col) {
|
|
boxRightDown = row to col
|
|
}
|
|
if (boxLeftTop.first == boxRightTop.first && boxLeftDown.first == boxRightDown.first) {
|
|
if (boxLeftTop.second == boxLeftDown.second && boxRightTop.second == boxRightDown.second) {
|
|
if ((boxRightTop.first - boxLeftDown.first + 1) * (boxRightTop.second - boxLeftDown.second + 1) == item + 1) {
|
|
cnt++
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
println(cnt)
|
|
} |