import java.util.*;
public class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in);
// 读取火车数量
int n = scanner.nextInt();
// 读取火车出站顺序
int[] departureOrder = new int[n];
for (int i = 0; i < n; i++) {
departureOrder[i] = scanner.nextInt();
}
// 调用方法来获取最大车站内火车数量
int result = findMaxTrainsAtStation(n, departureOrder);
// 输出结果
}
public static int findMaxTrainsAtStation(int n, int[] departureOrder) {
Stack<Integer> stack = new Stack<>();
int currentTrain = 1; // 当前到达的火车
int maxTrains = 0; // 用来记录栈的最大大小
// 遍历每一个出站的火车
for (int i = 0; i < n; i++) {
// 将火车推入栈中,直到栈顶是当前应该出站的火车
while (currentTrain <= n && (stack.isEmpty() || stack.peek() != departureOrder[i])) {
stack.push(currentTrain++);
}
// 检查栈顶的火车是否是当前应该出站的火车
if (!stack.isEmpty() && stack.peek() == departureOrder[i]) {
stack.pop(); // 出站
} else {
// 如果栈顶不是当前应该出站的火车,说明顺序不对,返回 -1
return -1;
}
// 更新车站内最大火车数量
maxTrains
= Math.
max(maxTrains, stack.
size()); }
return maxTrains;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgCiAgICAgICAgLy8g6K+75Y+W54Gr6L2m5pWw6YePCiAgICAgICAgaW50IG4gPSBzY2FubmVyLm5leHRJbnQoKTsKCiAgICAgICAgLy8g6K+75Y+W54Gr6L2m5Ye656uZ6aG65bqPCiAgICAgICAgaW50W10gZGVwYXJ0dXJlT3JkZXIgPSBuZXcgaW50W25dOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRlcGFydHVyZU9yZGVyW2ldID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgfQoKICAgICAgICAvLyDosIPnlKjmlrnms5XmnaXojrflj5bmnIDlpKfovabnq5nlhoXngavovabmlbDph48KICAgICAgICBpbnQgcmVzdWx0ID0gZmluZE1heFRyYWluc0F0U3RhdGlvbihuLCBkZXBhcnR1cmVPcmRlcik7CgogICAgICAgIC8vIOi+k+WHuue7k+aenAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZXN1bHQpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgaW50IGZpbmRNYXhUcmFpbnNBdFN0YXRpb24oaW50IG4sIGludFtdIGRlcGFydHVyZU9yZGVyKSB7CiAgICAgICAgU3RhY2s8SW50ZWdlcj4gc3RhY2sgPSBuZXcgU3RhY2s8PigpOwogICAgICAgIGludCBjdXJyZW50VHJhaW4gPSAxOyAgLy8g5b2T5YmN5Yiw6L6+55qE54Gr6L2mCiAgICAgICAgaW50IG1heFRyYWlucyA9IDA7IC8vIOeUqOadpeiusOW9leagiOeahOacgOWkp+Wkp+WwjwoKICAgICAgICAvLyDpgY3ljobmr4/kuIDkuKrlh7rnq5nnmoTngavovaYKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAvLyDlsIbngavovabmjqjlhaXmoIjkuK3vvIznm7TliLDmoIjpobbmmK/lvZPliY3lupTor6Xlh7rnq5nnmoTngavovaYKICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRUcmFpbiA8PSBuICYmIChzdGFjay5pc0VtcHR5KCkgfHwgc3RhY2sucGVlaygpICE9IGRlcGFydHVyZU9yZGVyW2ldKSkgewogICAgICAgICAgICAgICAgc3RhY2sucHVzaChjdXJyZW50VHJhaW4rKyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIOajgOafpeagiOmhtueahOeBq+i9puaYr+WQpuaYr+W9k+WJjeW6lOivpeWHuuermeeahOeBq+i9pgogICAgICAgICAgICBpZiAoIXN0YWNrLmlzRW1wdHkoKSAmJiBzdGFjay5wZWVrKCkgPT0gZGVwYXJ0dXJlT3JkZXJbaV0pIHsKICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOyAgLy8g5Ye656uZCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyDlpoLmnpzmoIjpobbkuI3mmK/lvZPliY3lupTor6Xlh7rnq5nnmoTngavovabvvIzor7TmmI7pobrluo/kuI3lr7nvvIzov5Tlm54gLTEKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8g5pu05paw6L2m56uZ5YaF5pyA5aSn54Gr6L2m5pWw6YePCiAgICAgICAgICAgIG1heFRyYWlucyA9IE1hdGgubWF4KG1heFRyYWlucywgc3RhY2suc2l6ZSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXhUcmFpbnM7CiAgICB9Cn0K