在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。
不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。
如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。
问题是,如何设计一个方案,让这N人尽快过桥,计算成绩这N个人的最短过桥时间。
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] times = new int[n];
for (int i = 0; i < n; i++) {
times[i] = scanner.nextInt();
}
Arrays.sort(times);
int totalTime = 0;
while (n > 3) {
int time1 = times[0];
int time2 = times[1];
int timeN = times[n - 1];
int timeNMinus1 = times[n - 2];
int option1 = time1 + timeN + time1 + timeNMinus1;
int option2 = time2 + time1 + timeN + time2;
totalTime += Math.min(option1, option2);
n -= 2;
}
if (n == 1) {
totalTime += times[0];
} else if (n == 2) {
totalTime += times[1];
} else if (n == 3) {
totalTime += times[0] + times[1] + times[2];
}
System.out.println(totalTime);