Problem:
有料道路通行料

20XX年に喜多方市熱塩加納町から南会津町までの6区間、総距離58kmの会津中央道路が完成し開通する予定です。

開通後、半年間は利用促進のため17時30分〜19時30分までに出発ICか到着ICを通過し、なおかつ走行距離が40km以下の車に対する通行料金は半額になります。ただし料金は50円単位とし、端数は切り上げます。下記の表は料金と距離の一覧表です。

例えば喜多方（２）から会津若松（４）までは料金が450円、距離が12kmとなります。半額時間帯であれば250円になります。

出発IC、出発IC通過時刻、到着IC、到着IC通過時刻を入力とし、料金を計算して出力するプログラムを作成してください。ただし、入力される時刻は24 時間表記の値とします。なお、17時30分および19時30分ちょうどに通過した場合も半額時間帯に含めます。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。

d
hd md
a
ha ma

１行目に出発ICの番号 d (1 ≤ d ≤ 7)、２行目に出発ICの通過時刻の時間 hd (0 ≤ hd ≤ 23) と分 md (0 ≤ md ≤ 59) が与えられます。

3行目に到着ICの番号 a (1 ≤ a ≤ 7)、４行目に到着ICの通過時刻の時間 ha (0 ≤ ha ≤ 23) と分 ma (0 ≤ ma ≤ 59) が与えられます。

Output

データセットごとに通行料金（整数）を１行に出力します。

Sample Input

2
17 25
4
17 45
4
17 25
7
19 35
0

Output for the Sample Input

250
1300

Solution in JAVA (judge verdict: Accepted)

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int s, g;
		int sh, sm;
		int gh, gm;
		int sTime, gTime;
		int money;
		int map[][] = {{0, 300, 500, 600, 700, 1350, 1650},
				{6, 0, 350, 450, 600, 1150, 1500},
				{13, 7, 0, 250, 400, 1000, 1350},
				{18, 12, 5, 0, 250, 850, 1300},
				{23, 17, 10, 5, 0, 600, 1150},
				{43, 37, 30, 25, 20, 0, 500},
				{58, 52, 45, 40, 35, 15, 0}};

		while (true) {
			s = sc.nextInt();
			if (s == 0) {
				break;
			}
			sh = sc.nextInt();
			sm = sc.nextInt();
			g = sc.nextInt();
			gh = sc.nextInt();
			gm = sc.nextInt();
			int swap = s + g;
			s = Math.min(s, g);
			g = swap - s;
			sTime = sh * 60 + sm;
			gTime = gh * 60 + gm;
			money = map[s - 1][g - 1];
			if (map[g - 1][s - 1] <= 40 && ((17 * 60 + 30 <= sTime && sTime <= 19 * 60 + 30) || (17 * 60 + 30 <= gTime && gTime <= 19 * 60 + 30))) {
				money /= 2;
				if (money % 50 != 0) {
					money = money - (money % 50) + 50;
				}
			}
			System.out.println(money);
		}
	}
}