Problem:
I: Starting Line

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，一直線上の道を走って，体力と判断力を養おうというものである．うさぎは今，スタートラインに立って長い長い道を見渡している．

道の途中にはいくつかニンジンが置かれており，うさぎはニンジンを食べると加速することができる．加速していないときのうさぎの走る速さは毎秒 U メートルであるが，ニンジンを食べることで，最後のニンジンを食べてから T 秒後までは速さが毎秒 V メートルとなる．また，うさぎはニンジンを K 個まで食べずに持っておくことができる．ニンジンを持っていても走る速さは変わらない．

ニンジンを持ったり食べたりするのに時間はかからないとして，ゴールまでの最短所要時間を求めたい．

Input

N K T U V L
D1
...
DN

N はニンジンの個数，L はスタートからゴールまでの距離 (メートル)，Di (1 ≤ i ≤ N) は i 番目のニンジンが置かれている場所のスタートからの距離 (メートル) である．

1 ≤ N ≤ 200，1 ≤ K ≤ N，1 ≤ T ≤ 10,000，1 ≤ U < V ≤ 10,000，2 ≤ L ≤ 10,000，0 < D1 < D2 < ... < DN < L を満たす．入力の値はすべて整数である．

Output

最短所要時間 (秒) を 1 行に出力せよ．10-6 以下の絶対誤差が許容される．

Sample Input 1

1 1 1 2 3 100
50

Sample Output 1

49.500000000

Sample Input 2

3 1 1 2 3 100
49
50
51

Sample Output 2

48.666666667

Solution in JAVA (judge verdict: Accepted)

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		try(Scanner sc = new Scanner(System.in)){
			int N=sc.nextInt();//にんじんの個数
			int K=sc.nextInt();//保持できるにんじんの数
			int k=0;//保持しているにんじんの数
			int T=sc.nextInt();//加速できる時間
			int U=sc.nextInt();//普通の速さ
			int V=sc.nextInt();//加速の速さ
			int d=V*T;//加速で進む距離
			int L=sc.nextInt();//スタ－トからゴールまでの距離
			int[] D=new int[L+1];//にんじんが置かれている場所
			int[] l=new int[L+1];
			for(int i=1; i<=N; i++) {
				int carrot=sc.nextInt();
				D[carrot]=i;
			}
			double ans=0;
			for(int i=0; i<L; i++) {
				if(l[i]==0 && D[i]==0 && k==0) {
					ans+=1.0/U;
				}
				else if(D[i]>0){
					if(l[i]==0) {
						ans+=1.0/V;
						if(i+d>=L) {
							for(int j=i; j<L; j++) {
								l[j]=1;
							}
						}
						else {
							for(int j=i; j<i+d; j++) {
								l[j]=1;
							}
						}
					}
					else if(l[i]==1 && K>0) {
						k++;
						K--;
						ans+=1.0/V;
					}
					else if(l[i]==1 && K==0) {
						ans+=1.0/V;
						if(i+d>=L) {
							for(int j=i; j<L; j++) {
								l[j]=1;
							}
						}
						else {
							for(int j=i; j<i+d; j++) {
								l[j]=1;
							}
						}
					}
				}
				else if(l[i]==1) {
					ans+=1.0/V;
				}
				else if(k>0) {
					k--;
					K++;
					ans+=1.0/V;
					if(i+d>=L) {
						for(int j=i; j<L; j++) {
							l[j]=1;
						}
					}
					else {
						for(int j=i; j<i+d; j++) {
							l[j]=1;
						}
					}
				}
				
			}
			System.out.println(ans);
			
			

		}
	}
}