输入输出样例
样例1
输入
44 74 -7 -12 -55 73 -8 -6 59 -45 76 -5 -10 60 -25 80 -6 -15 59 0
输出
222 1 0
样例2
输入
54 10 0 9 04 10 -2 7 02 10 04 10 -3 5 04 10 -1 8 0
输出
39 4 2
题解一
运行错误。80分。
模拟,不知道错在哪里。
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class Main {public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(reader.readLine().trim());long T = 0;String[] strs;// 下落果树下标数组List<Integer> list = new ArrayList<>(n);// 是否发生下落boolean flag;long total, num;for (int i = 1, m; i <= n; ++i) {strs = reader.readLine().trim().split(" ");m = Integer.parseInt(strs[0]);total = Integer.parseInt(strs[1]);flag = false;for (int j = 2; j <= m; ++j) {num = Integer.parseInt(strs[j]);if (num > 0) {if (num < total) {total = num;flag = true;}} else {total += num;}}T += total;if (flag) {list.add(i);}}int D = list.size();int E = 0;if ((list.get(D - 1) == n) && (list.get(0) == 1) && (list.get(1) == 2)) {++E;}if ((list.get(D - 1) == n) && (list.get(0) == 1) && (list.get(D - 2) == n - 1)) {++E;}for (int i = 1; i < D - 1; ++i) {if ((list.get(i - 1) == list.get(i) - 1) && (list.get(i + 1) == list.get(i) + 1)) {++E;}}System.out.println(T + " " + D + " " + E);}}
