結果
| 問題 | No.43 野球の試合 | 
| コンテスト | |
| ユーザー |  purple_jwl | 
| 提出日時 | 2016-10-27 23:43:13 | 
| 言語 | Scala(Beta) (3.6.2) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1,166 ms / 5,000 ms | 
| コード長 | 868 bytes | 
| コンパイル時間 | 8,914 ms | 
| コンパイル使用メモリ | 263,340 KB | 
| 実行使用メモリ | 71,680 KB | 
| 最終ジャッジ日時 | 2024-06-29 19:44:12 | 
| 合計ジャッジ時間 | 20,846 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 7 | 
ソースコード
import scala.io.StdIn
object Main {
  def rec(idx: Int, n: Int, s: Array[Array[Char]]): Int = {
    if (idx == n * n) {
      val winCount = s.map { (ss) =>
        ss.filter(_ == 'o').size
      }
      var rank = 1
      for (i <- (0 to n).reverse) {
        if (winCount(0) == i) return rank
        if (winCount.filter(_ == i).size != 0) rank += 1
      }
    }
    val x = idx % n
    val y = idx / n
    if (s(y)(x) == '-') {
      s(y)(x) = 'o'
      s(x)(y) = 'x'
      val res1 = rec(idx + 1, n, s)
      s(y)(x) = 'x'
      s(x)(y) = 'o'
      val res2 = rec(idx + 1, n, s)
      s(y)(x) = '-'
      s(x)(y) = '-'
      return Math.min(res1, res2)
    } else {
      return rec(idx + 1, n, s)
    }
  }
  def main(args: Array[String]): Unit = {
    val n = StdIn.readInt
    val s = Array.fill(n)(StdIn.readLine.toArray)
    println(rec(0, n, s))
  }
}
            
            
            
        