Problem:
西暦和暦変換

西暦で表された年月日を、元号を用いた和暦に変換し、その年月日を出力するプログラムを作成してください。入力は例に示すように 3 つの整数であり、順に西暦年、月、日です。これを、出力例に示すように変換してください。なお、明治以前の年月日が入力された場合は「pre-meiji」と表示してください。

各年号の最初の年は「元年」ではなく「１年」と出力することとします。

元号

期間

meiji

1868. 9. 8 〜 1912. 7.29

taisho

1912. 7.30 〜 1926.12.24

showa

1926.12.25 〜 1989. 1. 7

heisei

1989. 1. 8 〜

入力

複数のデータが与えられます。各データとして年、月、日を表す３つの整数が空白区切りで１行に与えられます。

入力の終わりまで処理してください。データの数は 50 を超えません。

出力

空白区切りの元号、年、月、日、または「pre-meiji」を１行に出力してください。

Sample Input

2005 9 3
1868 12 2
1868 9 7

Output for the Sample Input

heisei 17 9 3
meiji 1 12 2
pre-meiji

Solution in Scala (judge verdict: Wrong Answer)

import scala.io.Source.stdin
import scala.collection.mutable.ArrayBuffer

object Main extends App {
  def to(a:Array[Int],y:Int,m:Int,d:Int) =
    (a(0)<y) || (a(0)==y && a(1)<m) || (a(0)==y && a(1)==m && a(2)<d)

  val b = new ArrayBuffer[String]

  stdin.getLines.foreach { s=>
    val n = s.split(" ").map(_.toInt)
    if(to(n,1868,9,8)) b+="pre-meiji"
    else if(to(n,1912,7,29)) b+="meiji " + (n(0)-1867) + " " + n(1) + " " + n(2)
    else if(to(n,1926,12,24)) b+="taisho " + (n(0)-1911) + " " + n(1) + " " + n(2)
    else if(to(n,1989,1,7)) b+="showa " + (n(0)-1925) + " " + n(1) + " " + n(2)
    else b+="heisei " + (n(0)-1988) + " " + n(1) + " " + n(2)
  }
  println(b.mkString("\n"))
}