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.*;
import java.lang.*;
import java.math.*;
import java.io.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;

public class Main{
	Scanner sc=new Scanner(System.in);

	int INF=1<<28;
	double EPS=1e-12;

	int n, k, t, u, v, goal;
	int[] d;

	void run(){
		n=sc.nextInt();
		k=sc.nextInt();
		t=sc.nextInt();
		u=sc.nextInt();
		v=sc.nextInt();
		goal=sc.nextInt();
		d=new int[n+1];
		for(int i=0; i<n; i++){
			d[i]=sc.nextInt();
		}
		d[n]=goal;

		boolean boost=false;
		double boostTime=0;
		int carrot=0;
		double x=0;
		double time=0;

		for(int i=0; i<=n; i++){
			if(boost){
				for(; carrot>=0; carrot--){
					if(x+v*boostTime>d[i]+EPS){
						time+=(d[i]-x)/v;
						boostTime-=(d[i]-x)/v;
						x=d[i];
						break;
					}else{
						x+=v*boostTime;
						time+=boostTime;
						boostTime=t;
					}
				}
			}
			double s=(double)(d[i]-x)/u;
			time+=s;
			carrot++;
			if(!boost||carrot>k){
				boost=true;
				boostTime=t;
				carrot--;
			}
			x=d[i];
		}
		println(time+"");
	}

	void debug(Object... os){
		System.err.println(Arrays.deepToString(os));
	}

	void print(String s){
		System.out.print(s);
	}

	void println(String s){
		System.out.println(s);
	}

	public static void main(String[] args){
		// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));
		new Main().run();
	}
}