33OJ
登录 注册

#P17575. [JAG 2026 Summer Camp #3] Self-Destruct Sequence

[JAG 2026 Summer Camp #3] Self-Destruct Sequence

题目描述

给定一个由 NN 个正整数组成的序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N)。

对于每个 kk(1≤k≤N1\le k\le N),求解以下问题:

令 BB 最初为序列 (A1,A2,…,Ak)(A_1,A_2,\ldots,A_k)。在操作过程中的任意时刻,用 ∣B∣|B| 表示 BB 当前的长度,用 BiB_i 表示它的第 ii 个元素。

你可以执行任意次以下操作。

  • 选择一个下标 ii(1≤i≤∣B∣1\le i\le |B|),满足 i+Bi−1≤∣B∣i+B_i-1\le |B|。从 BB 中删除元素 Bi,Bi+1,…,Bi+Bi−1B_i,B_{i+1},\ldots,B_{i+B_i-1}。剩余元素按照原来的相对顺序组成新的序列 BB。

判断是否可以将 BB 变为空序列。如果可以,求所需操作次数的最小值和最大值。

输入格式

输入包含一组测试数据,格式如下。

N
A_1 A_2 ... A_N

第一行包含一个整数 NN(1≤N≤50001\le N\le5000),表示序列的长度。

第二行包含 NN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_N(1≤Ai≤N1\le A_i\le N)。

输出格式

输出 NN 行。

对于每个 kk(1≤k≤N1\le k\le N),第 kk 行输出 B=(A1,A2,…,Ak)B=(A_1,A_2,\ldots,A_k) 对应的答案。如果无法将 BB 变为空序列,输出 -1。否则,输出两个整数,分别表示将 BB 变为空序列所需操作次数的最小值和最大值。

5
3 4 2 1 1
-1
-1
1 1
2 2
2 3
6
2 1 3 2 1 2
-1
1 1
2 2
-1
2 3
3 4