結果
| 問題 | No.179 塗り分け |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-05-16 08:32:40 |
| 言語 | Kotlin (2.4.10 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 729 ms / 3,000 ms |
| + 34µs | |
| コード長 | 1,319 bytes |
| 記録 | |
| コンパイル時間 | 9,238 ms |
| コンパイル使用メモリ | 509,192 KB |
| 実行使用メモリ | 91,832 KB |
| 最終ジャッジ日時 | 2026-08-24 03:41:11 |
| 合計ジャッジ時間 | 25,247 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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")
}
}