import java.util.*; public class Main { public static void main(String[] agrs) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n + 1]; for (int i = 1; i <= n; i++) { arr[i] = sc.nextInt(); } System.out.println(max(arr)); } private static int max(int[] arr) { List<Integer> list = new LinkedList<>(); for (int i = (arr.length-1) / 2; i > 0; i--) { list.add(findMax(arr, i, arr.length)); } int result = 0; for (int i = 0; i < list.size(); i++) { result += list.get(i); } return result; } private static int findMax(int[] arr, int i, int len) { int max = arr[i]; int tmp; if (2 * i + 1 < len) tmp = arr[2 * i] > arr[2 * i + 1] ? arr[2 * i] : arr[2 * i + 1]; else tmp = arr[2 * i]; arr[i] = 0; return max > tmp ? max : tmp; } }
隔山打牛(度小满笔试题)
最新推荐文章于 2023-08-03 16:57:45 发布