import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { /** * 1 2 3 4 * 1 2 5 */ public static int count = 0; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // int[] costs = new int[scanner.nextInt()]; // for (int i = 0; i < costs.length; i++) { // costs[i] = scanner.nextInt(); // } // System.out.println(minCost(costs)); // int n = scanner.nextInt(); // int[] array = new int[n]; // for (int i = 0; i < array.length; i++) { // array[i] = scanner.nextInt(); // } // System.out.println(upPath(array)); // int m = scanner.nextInt(); // int[][] matrix = new int[n][m]; // for (int i = 0; i < n; i++) { // for (int i1 = 0; i1 < m; i1++) { // matrix[i][i1] = scanner.nextInt(); // } // } // System.out.println(minPath(matrix)); // int n = scanner.nextInt(); // int m = scanner.nextInt(); // String s1 = scanner.next(); // String s2 = scanner.next(); // char[] c1 = s1.toCharArray(); // char[] c2 = s2.toCharArray(); // int[][] dp = new int[c1.length + 1][c2.length + 1]; // for (int i = 1; i <= c1.length; i++) { // for (int j = 1; j <= c2.length; j++) { // if (c1[i - 1] == c2[j - 1]) { // dp[i][j] = dp[i - 1][j - 1] + 1; // } else { // dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]); // } // } // } // System.out.println(dp[c1.length][c2.length]); // int n = scanner.nextInt(); // int[][] letters = new int[n][2]; // int[] tmp = new int[n]; // for (int i = 0; i < n; i++) { // for (int j = 0; j < 2; j++) { // letters[i][j] = scanner.nextInt(); // } // } // Arrays.sort(letters, (o1, o2) -> { // if (o1[0] != o2[0]) { // return o1[0] - o2[0]; // } else { // return o2[1] - o1[1]; // } // }); // for (int i = 0; i < n; i++) { // tmp[i] = letters[i][1]; // } // int n = scanner.nextInt(); // int[] arr = new int[n]; // for (int i = 0; i < n; i++) { // arr[i] = scanner.nextInt(); // } // System.out.println(process(arr, n)); int n = scanner.nextInt(); int[] p = new int[n]; for (int i = 0; i < p.length; i++) { p[i] = scanner.nextInt(); } System.out.println(getMaxMoney(p)); } //买卖股票(一) private static int getMaxMoney(int[] p) { int res = 0, inMoney = Integer.MAX_VALUE, outMoney = Integer.MIN_VALUE; for (int i = 0; i < p.length - 1; i++) { if (p[i] >= inMoney) { continue; } if (p[i] < inMoney) { inMoney = p[i]; outMoney = Integer.MIN_VALUE; } for (int j = i + 1; j < p.length; j++) { if (p[j] <= outMoney) { continue; } if (p[j] > outMoney) { outMoney = p[j]; res = Math.max(res, outMoney - inMoney); } } } return res; } /** * 7 * s=1 * 0 1 2n c i 3 * 2 0 0 0 * * @param p * @return */ private static int jumpGameThree(int[] p) { int n = p.length; int step = 0, cur = 0, next = 0; for (int i = 0; i < n; i++) { if (cur < i) { step++; cur = next; if (cur < i) { return -1; } } next = Math.max(next, i + p[i]);//next = 2 } return step; } /** * 6 * i2 4 2 100 0 1 * 0 s-1 -1 -1 -1 -1 * * @param a * @return */ private static int jumpGameTwo(int[] a) { int n = a.length; int[] dp = new int[n]; Arrays.fill(dp, -1); dp[0] = a[0]; for (int i = 0; i < n - 1; i++) { if (dp[i] < 0 || a[i] == 0) { continue; } int end = Math.min(n, i + a[i] + 1); for (int j = i + 1; j < end; j++) { dp[j] = Math.max(dp[j], dp[i] + a[j]); } } return dp[n - 1]; } private static boolean jumpGame(int[] p) { int n = p.length; boolean[] dp = new boolean[n]; dp[0] = true; for (int i = 0; i < n; i++) { if (dp[i]) { for (int j = i + 1; (j <= i + p[i]) && j < n; j++) { dp[j] = true; } } else { break; } } return dp[n - 1]; } private static int deleteMaxValue(int[] p) { int[] dp = new int[1001]; int[] trans = new int[1001]; for (int i = 0; i < p.length; i++) { trans[dp[i]] += dp[i]; } dp[0] = 0; dp[1] = trans[1]; for (int i = 2; i < trans.length; i++) { dp[i] = Math.max(dp[i - 1], dp[i - 2] + trans[i]); } return dp[dp.length - 1]; } private static int process(int[] arr, int n) { int[] dp1 = new int[n]; int[] dp2 = new int[n]; dp1[1] = arr[0]; dp2[1] = arr[1]; int res = Math.max(arr[0], arr[1]); for (int i = 2; i < n; i++) { dp1[i] = Math.max(dp1[i - 2] + arr[i - 1], dp1[i - 1]); dp2[i] = Math.max(dp2[i - 2] + arr[i], dp2[i - 1]); res = Math.max(dp1[i], dp2[i]); } return res; } private static void getMaxValue(int[] arr) { Scanner scanner = new Scanner(System.in); int n = arr.length; for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); } if (n == 1) { System.out.println(arr[0]); } if (n == 2) { System.out.println(Math.max(arr[1], arr[0])); } int[] dp = new int[n]; dp[0] = arr[0]; dp[1] = arr[1]; dp[2] = arr[0] + arr[2]; for (int i = 3; i < dp.length; i++) { dp[i] = arr[i] + (Math.max(dp[i - 2], dp[i - 3])); } System.out.println(Math.max(dp[n - 1], dp[n - 2])); } public static int getMaxLength(String s1, String s2) { char[] c1 = s1.toCharArray(); char[] c2 = s2.toCharArray(); int[][] dp = new int[c1.length + 1][c2.length + 1]; for (int i = 1; i <= c1.length; i++) { for (int j = 1; j <= c2.length; j++) { if (c1[i - 1] == c2[j - 1]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]); } } } return dp[c1.length][c2.length]; } public static int upPath(int[] array) { int n = array.length; int[] dp = new int[n]; Arrays.fill(dp, 1); int res = 1; for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (array[i] > array[j]) { dp[i] = Math.max(dp[i], dp[j] + 1); } res = Math.max(res, dp[i]); } } return res; } private static int minPath(int[][] matrix) { if (matrix == null || matrix.length < 1 || matrix[0] == null || matrix[0].length < 1) { return 0; } int n = matrix.length; int m = matrix[0].length; int[][] dp = new int[n][m]; dp[0][0] = matrix[0][0]; for (int i = 1; i < m; i++) { dp[0][i] = dp[0][i - 1] + matrix[0][i]; } for (int i = 1; i < n; i++) { dp[i][0] = dp[i - 1][0] + matrix[i][0]; } for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) { dp[i][j] = Math.min(dp[i - 1][j] + matrix[i][j], dp[i][j - 1] + matrix[i][j]); } } return dp[n - 1][m - 1]; } /** * 3 2 -2 4 * * @param nums * @return */ private static int Multiply(int[] nums) { int preMax = 1; int preMin = 1; int res = (int) -1e9; for (int num : nums) { int a = preMax * num, b = preMin * num; //3 3 6 6 -12 -4 preMax = Math.max(Math.max(a, b), num); //3 6 -2 preMin = Math.min(Math.min(a, b), num); //3 2 -12 res = Math.max(preMax, res); } return res; } private static int maxLength(int[] array) { int res = array[0], cur = array[0]; for (int i = 1; i < array.length; i++) { cur = Math.max(array[i], array[i] + cur); res = Math.max(res, cur); } return res; } private static int numTree(int n) { int[] dp = new int[n + 1]; dp[0] = 1; dp[1] = 1; for (int i = 2; i <= n; i++) { for (int j = 0; j < i; j++) { dp[i] += dp[j] * dp[i - j - 1]; } } return dp[n]; } private static int minCost(int[] costs) { int[] dp = new int[costs.length + 1]; for (int i = 2; i <= costs.length; i++) { dp[i] = Math.min(dp[i - 2] + costs[i - 2], dp[i - 1] + costs[i - 1]); } return dp[costs.length]; } private static void dfs(int n) { if (n < 0) { return; } if (n == 0) { count++; return; } for (int i = 1; i <= n; i++) { dfs(n - i); } } public static ArrayList<String> stringArrayList = new ArrayList<>(); public static ArrayList<ArrayList<Integer>> arrayList = new ArrayList<>(); public static void main1(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); String fourPai = scanner.nextLine(); String[] strings = fourPai.split(" "); int[] fourNum = new int[4]; int index = 0; for (String string : strings) { if (string.compareTo("joker") == 0 || string.compareTo("JOKER") == 0) { System.out.println("ERROR"); return; } if (string.compareTo("J") == 0) { fourNum[index++] = 11; continue; } if (string.compareTo("Q") == 0) { fourNum[index++] = 12; continue; } if (string.compareTo("K") == 0) { fourNum[index++] = 13; continue; } if (string.compareTo("A") == 0) { fourNum[index++] = 1; } else { fourNum[index++] = Integer.parseInt(string); } } ArrayList<Integer> integerArrayList = new ArrayList<>(); ArrayList<Integer> indexAll = new ArrayList<>(); for (int i = 0; i < fourNum.length; i++) { integerArrayList.add(fourNum[i]); indexAll.add(i); dfs(i, fourNum, integerArrayList, indexAll); indexAll.clear(); integerArrayList.clear(); } for (ArrayList<Integer> List : arrayList) { for (int i = 0; i < List.size(); i++) { getString(i + 1, List, new StringBuffer().append(List.get(i)), List.get(i)); if (stringArrayList.size() > 0 && stringArrayList.get(0).length() < 11) { changeString(stringArrayList.get(0)); return; } break; } } System.out.println("NONE"); } private static void changeString(String s) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < s.length(); i++) { if (Character.isDigit(s.charAt(i))) { switch (s.charAt(i)) { } } } } private static void getString(int i, ArrayList<Integer> list, StringBuffer stringBuffer, Integer sum) { if (i == list.size()) { if (sum == 24) { stringArrayList.add(stringBuffer.toString()); } return; } for (int j = i; j < list.size(); j++) { Integer integer = list.get(j); sum = sum + integer; stringBuffer.append("+"); getString(j + 1, list, stringBuffer.append(integer), sum); stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length()); sum = sum - integer; } for (int j = i; j < list.size(); j++) { Integer integer = list.get(j); sum = sum - integer; stringBuffer.append("-"); getString(j + 1, list, stringBuffer.append(integer), sum); stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length()); sum = sum + integer; } for (int j = i; j < list.size(); j++) { Integer integer = list.get(j); sum = sum * integer; stringBuffer.append("*"); getString(j + 1, list, stringBuffer.append(integer), sum); stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length()); sum = sum / integer; } for (int j = i; j < list.size(); j++) { Integer integer = list.get(j); int temp = sum; sum = sum / integer; stringBuffer.append("/"); getString(j + 1, list, stringBuffer.append(integer), sum); stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length()); sum = temp; } } private static void dfs(int i, int[] fourNum, ArrayList<Integer> integerArrayList, ArrayList<Integer> indexAll) { if (integerArrayList.size() == fourNum.length) { if (!arrayList.contains(integerArrayList)) { arrayList.add(new ArrayList<>(integerArrayList)); } return; } for (int j = 0; j < fourNum.length; j++) { if (!indexAll.contains(j)) { integerArrayList.add(fourNum[j]); indexAll.add(j); dfs(j, fourNum, integerArrayList, indexAll); indexAll.remove(indexAll.size() - 1); integerArrayList.remove(integerArrayList.size() - 1); } } } public int[] solve(int n, int m, int[] a) { // write code here if (m % n == 0) { return a; } int j = 0; m = m % n; for (int i = a.length - m; i < a.length; i++) { int temp = a[i]; a[i] = a[j] + m; a[j++] = temp; } for (int i = j; i < a.length - m; i++) { a[i] = a[i] - m; } return a; } public ArrayList<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> res = new ArrayList<>(); if (matrix.length == 0) return res; int top = 0, bottom = matrix.length - 1; int left = 0, right = matrix[0].length - 1; while (top < (matrix.length + 1) / 2 && left < (matrix[0].length + 1) / 2) { //上面 左到右 for (int i = left; i <= right; i++) { res.add(matrix[top][i]); } //右边 上到下 for (int i = top + 1; i <= bottom; i++) { res.add(matrix[i][right]); } //下面 右到左 for (int i = right - 1; top != bottom && i >= left; i--) { res.add(matrix[bottom][i]); } //左边 下到上 for (int i = bottom - 1; left != right && i >= top + 1; i--) { res.add(matrix[i][left]); } // 遍历完一圈之后,所有往里面靠 ++top; --bottom; ++left; --right; } return res; } }