U438090 [SUMMER STU] First Zero (Hard Version)

题目背景

UPDATE: `2024/8/13` 新增一组 hack 数据

题目描述

给你一个 $01$ 序列,一开始都为 $0$. 告诉你若干个点 $i$,表示第 $i$ 个点将被标记为 $1$. 请你在每次修改后,输出区间 $[i,n]$ 从左数第一个 $0$ 的位置.

输入格式

第一个数 $n$ 表示序列的长度. 随后 $n-1$ 行,每行一个 $i$,表示修改的点.

输出格式

$n-1$ 行,输出每次修改后目标区间从左数第一个 $0$ 的位置. 特别地,如果没有剩余的 $0$,请你输出 $-1$.

说明/提示

输入数据满足 $n\le 5\times 10^{6}$ **本题输入量较大(最大点约为 `48MB`),请你尽量选择较快的读入方式** 本题提供快读模板 ```cpp inline long long read(){long long x=0,f=1;char ch=getchar();while(ch'9'){if(ch=='-'){f=-1;}ch=getchar();}while(ch>='0'&&ch