結果

問題 No.5 数字のブロック
ユーザー くわいくわい
提出日時 2015-09-20 19:43:56
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,419 bytes
コンパイル時間 6,806 ms
コンパイル使用メモリ 234,888 KB
最終ジャッジ日時 2023-09-11 12:58:35
合計ジャッジ時間 7,408 ms
ジャッジサーバーID
(参考情報)
judge14 / judge13
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
-- [E040] Syntax Error: Main.scala:34:32 ---------------------------------------
34 |  def main(args: Array[String]) {
   |                                ^
   |                                '=' expected, but '{' found
1 error found

ソースコード

diff #

import java.io.{BufferedReader, InputStreamReader}

object Problem005 {

  def inputFromStdin(): (Int, Int, Seq[Int]) = {
    val br = new BufferedReader(new InputStreamReader(System.in))
    val width = br.readLine.toInt
    val blockNum = br.readLine.toInt
    val widthSeq = (br.readLine.split(" ").map(_.toInt)).toList

    (width, blockNum, widthSeq)
  }

  def proc(width: Int, blockNum: Int, widthSeq: Seq[Int]): Int = {
    // 一番小さいものから順に入れていけば答えが出る
    val sortedSeq = widthSeq.sorted

    def procR(remain: Int, s: Seq[Int]): Int = {
      s match {
        case (head :: tail) => {
          if (head > remain) {
            widthSeq.length - s.length // これ以上入らない
          } else {
            procR(remain - head, s.tail) // まだ入るから次へ
          }
        }
        case Nil => widthSeq.length // 全部入った
      }
    }

    procR(width, sortedSeq)
  }

  def main(args: Array[String]) {
    val (width, blockNum, widthList) = inputFromStdin()
    val result = proc(width, blockNum, widthList)
    println(result)
    // test
  }

  def test = {
    assert(proc(16, 3, Seq(10, 5, 7)) == 2)
    assert(proc(100, 10, Seq(14, 85, 77, 26, 50, 45, 66, 79, 10, 3)) == 5)
    assert(proc(10000, 3, Seq(10, 5, 7)) == 3)
    assert(proc(16, 0, Seq()) == 0)
    assert(proc(0, 1, Seq(1)) == 0)
    assert(proc(0, 0, Seq()) == 0)
  }

}
0