Problem:
鉄道路線

複線（上りと下りが別の線路になっていてどこででもすれ違える）の鉄道路線があります。この路線には終端駅を含めて11 の駅があり、それぞれの駅と駅の間は図で示す区間番号で呼ばれています。

この路線の両方の終端駅から列車が同時に出発して、途中で停まらずに走ります。各区間の長さと2 本の列車の速度を読み込んで、それぞれの場合について列車がすれ違う区間の番号を出力するプログラムを作成してください。ただし、ちょうど駅のところですれ違う場合は、両側の区間番号のうち小さいほうの数字を出力します。また、列車の長さ、駅の長さは無視できるものとします。

Input

複数のデータセットが与えられる。各データセットは以下のような形式で与えられる。

l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,v1,v2

li (1 ≤ li ≤ 2,000) は区間 i の長さ(km)を表す整数である。v1 は区間 1 側の終端駅を出発した列車の速度(km/h)、v2 は区間 10 側の終端駅を出発した列車の速度(km/h)を表す整数である (1 ≤ v1, v2 ≤ 2,000)。

データセットの数は 50 を超えない。

Output

データセットごとに、列車がすれちがう区間の番号を１行に出力する。

Sample Input

1,1,1,1,1,1,1,1,1,1,40,60
1,1,1,1,1,3,3,3,3,3,50,50
10,10,10,10,10,10,10,10,10,10,50,49

Output for the Sample Input

4
7
6

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);
		while(sc.hasNext()) {
			String[] s = sc.next().split(",");
			int[] l = new int[10];
			int sum = 0;
			for(int i = 0; i < 10; i++) {
				l[i] = Integer.parseInt(s[i]);
				sum += l[i];
			}
			int[]seg = new int[sum + 1];
			int idx = 0;
			int k = l[0];
			for(int i = 0; i <= sum; i++) {
				if(i <= k) {
					seg[i] = idx;
				}else {
					idx++;
					k += l[idx];
					seg[i] = idx;
				}
			}
			double v1 = Double.parseDouble(s[10]);
			double v2 = Double.parseDouble(s[11]);
			double h = (double)(sum * v1 )/ (v1 + v2);
			int id = (int)Math.ceil(h);
			System.out.println(seg[id] + 1);
		}

	}
}