結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-05-16 08:32:40 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
AC
|
| 実行時間 | 1,199 ms / 3,000 ms |
| コード長 | 1,319 bytes |
| コンパイル時間 | 15,012 ms |
| コンパイル使用メモリ | 442,000 KB |
| 実行使用メモリ | 91,140 KB |
| 最終ジャッジ日時 | 2024-07-23 15:01:45 |
| 合計ジャッジ時間 | 37,699 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
ソースコード
package yukicoder
fun main() {
val (h, w) = readLine()!!.split(" ").map(String::toInt)
val blacks = (0 until h).flatMap { h2 ->
readLine()!!
.mapIndexed { index, c -> Pair(index, c) }
.filter { it.second != '.' }
.map { Pair(h2, it.first) }
}
if (blacks.isEmpty() || blacks.size % 2 != 0) {
println("NO")
return
}
fun canCopy(): Boolean {
for (moveH in -h until h) {
for (moveW in -w until w) {
if (moveH == 0 && moveW == 0) {
continue
}
var tmpBlacks = blacks.toMutableSet()
for (red in blacks) {
if (!tmpBlacks.contains(red)) {
continue
}
val blue = Pair(red.first + moveH, red.second + moveW)
if (!tmpBlacks.contains(blue)) {
break
}
tmpBlacks.remove(red)
tmpBlacks.remove(blue)
}
if (tmpBlacks.isEmpty()) {
return true
}
}
}
return false
}
when (canCopy()) {
true -> println("YES")
false -> println("NO")
}
}