-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathElevator.java
70 lines (54 loc) · 2.02 KB
/
Elevator.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.util.*;
import java.io.*;
import java.text.DecimalFormat;
import java.math.RoundingMode;
public class Elevator
{
public static final double EPS = 1e-8;
public static void main(String[] argv) {
Scanner in = new Scanner(System.in).useLocale(Locale.US);
PrintWriter out = new PrintWriter(System.out);
int n = in.nextInt();
int k = in.nextInt();
double u = in.nextDouble();
double v = in.nextDouble();
double time = v * (k+n-2) + 15 + 5;
double timeToGetOnFirstFloor = (k - 1) * v;
int a = n;
warn("With no move it will take "+time+" elevator take "+timeToGetOnFirstFloor+" to get down");
for (int i = 1; i < n; i++) {
double petyaTime = i * u;
double timeToGetUp = v * (n-i-1.0);
double fullTime;// = petyaTime + elevatorDelay + timeToGetUp+5.0;
if (n-1==1) {
warn ("1");
fullTime = petyaTime;
}
else if (petyaTime - timeToGetOnFirstFloor < 1e-9) {
warn ("2");
fullTime = timeToGetOnFirstFloor + 15.0 + timeToGetUp + 5.0;
}
else if (petyaTime - timeToGetOnFirstFloor - 15.0 < 1e-9) {
double elevatorDelay = 15.0-(petyaTime - timeToGetOnFirstFloor);
warn ("3 "+elevatorDelay);
fullTime = petyaTime + elevatorDelay + timeToGetUp + 5.0;
}
else {
warn ("4");
fullTime = petyaTime + timeToGetUp + 5.0;
}
warn("Petya is on "+(n-i)+" floor. He spend "+petyaTime+"s i+ timeToGetUp="+timeToGetUp+ " full="+fullTime);
if (fullTime + 1e-9 < time) {
time = fullTime;
a = n - i;
}
}
System.out.println(a+"");
}
public static final boolean DEBUG = true;
public static void warn(String s) {
if (DEBUG) {
System.out.println(s);
}
}
}