public class 农场里饲养了N只兔子 { private static int[][] rabbit; private static int time; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); rabbit = new int[n][2]; for (int i = 0; i < n; i++) { int high = scanner.nextInt(); rabbit[i][0] = high; } time = scanner.nextInt(); int start = scanner.nextInt(); water(start); int a = 0; int b = 0; int c = 0; for (int[] rab : rabbit) { if (rab[1] == 0) { a++; } else if (rab[1] > 2) { c++; } else { b++; } } System.out.println(a + " " + b + " " + c); } private static void water(int start) { if (time <= 0) { return; } int startLine = (rabbit[start][0] + rabbit[start][1]); int leftLine = startLine; int j = (start - 1); int leftIndex = start; while (j >= 0) { if (rabbit[j][0] + rabbit[j][1] > leftLine) { break; } if (rabbit[j][0] + rabbit[j][1] < leftLine) { leftLine = rabbit[j][0] + rabbit[j][1]; leftIndex = j; } j--; } int rightLine = startLine; int rightIndex = start; int l = (start + 1); while (l < rabbit.length) { if (rightLine < rabbit[l][0] + rabbit[l][1]) { break; } if (rightLine > rabbit[l][0] + rabbit[l][1]) { rightLine = rabbit[l][0] + rabbit[l][1]; rightIndex = l; } l++; } if (leftLine == startLine && rightLine < startLine) { rabbit[rightIndex][1]++; time--; water(start); return; } if (leftLine < startLine) { rabbit[leftIndex][1]++; time--; water(start); return; } rabbit[start][1]++; time--; water(start); } }
开车问题111
于 2023-07-27 13:50:14 首次发布