結果

問題 No.672 最長AB列
コンテスト
ユーザー mijime
提出日時 2018-04-15 21:25:13
言語 Scala(Beta)
(3.8.1)
コンパイル:
scalac _filename_
実行:
java -cp .:/home/linuxbrew/.linuxbrew/Cellar/scala/3.8.1/libexec/maven2/org/scala-lang/scala3-library_3/3.8.1/scala3-library_3-3.8.1.jar:/home/linuxbrew/.linuxbrew/Cellar/scala/3.8.1/libexec/maven2/org/scala-lang/scala-library/3.8.1/scala-library-3.8.1.jar _class_
結果
WA  
実行時間 -
コード長 784 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 7,103 ms
コンパイル使用メモリ 278,324 KB
実行使用メモリ 65,980 KB
最終ジャッジ日時 2026-03-09 15:37:12
合計ジャッジ時間 14,425 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge2_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 7 WA * 9
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import java.util.Scanner

object Main {
  def max(a: Int, b: Int): Int = {
    if (a < b) b else a
  }

  def min(a: Int, b: Int): Int = {
    if (a < b) a else b
  }

  def solve(sc: => Scanner): Unit = {
    val s = sc.next
    val (_, _, maxcnt, _) = (s + ' ').foldLeft((0, 0, 0, ' '))((acc, c) =>
      (acc, c) match {
        case ((acnt, bcnt, maxcnt, prev), c) if prev != c =>
          (if (c == 'A') 1 else acnt, if (c == 'B') 1 else bcnt, max(maxcnt, min(acnt, bcnt)), c)
        case ((acnt, bcnt, maxcnt, prev), 'A') => (acnt + 1, bcnt, maxcnt, 'A')
        case ((acnt, bcnt, maxcnt, prev), 'B') => (acnt, bcnt + 1, maxcnt, 'B')
    })
    println(maxcnt*2)
  }

  def main(args: Array[String]): Unit = {
    val sc: Scanner = new Scanner(System.in)
    solve(sc)
  }
}
0