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 JAVA (judge verdict: Wrong Answer)

import java.util.Scanner;

public class Main {
	static int meiji = era(1868,9,8),
			taisho = era(1912,7,30),
			showa = era(1926,12,25),
			heisei = era(1989,1,8);
	static int era(int y, int m, int d ){
		return y*10000 + m*100 + d;
	}
	static String ans(int temp ,int y , int m ,int d){
		y++;
		if( meiji <=temp &&temp < taisho)return "meiji "+ String.valueOf(y - 1868)+" " + m +"  "+ d;
		else if(taisho <= temp&&temp < showa)return "taisho "+ String.valueOf(y - 1912)+" " + m +"  "+ d;
		else if(showa <= temp&&temp < heisei)return "show " + String.valueOf(y - 1926)+" " + m +"  "+ d;
		else if (temp >= heisei)return "heisei " + String.valueOf(y - 1989)+" " + m +"  "+ d;
		else return "pre-meiji";
	}
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner (System.in);
		while(sc.hasNext()){
			int 
			 y = sc.nextInt(),
			 m = sc.nextInt(),
			 d = sc.nextInt();
			System.out.println(ans(era(y,m,d),y,m,d));
		}
		
	}
}