时间限制:2s
空间限制:512MB
题目描述
给定一个长度为 N 的排列 P=(P1,P2,…,PN),其中包含 1 到 N 的每个整数恰好一次。
对每个 i=1,2,…,N,请求出满足以下所有条件的整数对 (l,r) 中 r−l+1 的最小值:
- 1≤l≤i≤r≤N;
- r−l+1 为奇数;
- Pi 不是连续子序列 (Pl,Pl+1,…,Pr) 的中位数。
如果不存在这样的 (l,r),则输出 −1。
对于长度为奇数 L 的整数序列 A,将其按升序排列得到 A′,则 A 的中位数定义为 A′ 中第 2L+1 个数。
输入格式
从标准输入读入数据,格式如下:
N
P1 P2 … PN
输出格式
依次输出 i=1,2,…,N 的答案,相邻答案之间用一个空格分隔。
样例输入 1
5
1 3 5 4 2
样例输出 1
3 3 3 5 3
样例解释 1
当 i=2 时,取 (l,r)=(2,4),子序列 (3,5,4) 的中位数为 4,不是 P2=3,因此答案为 3。
当 i=4 时,长度为 1 或 3 的可选区间都以 P4=4 为中位数;取 (l,r)=(1,5) 时中位数为 3,故答案为 5。
样例输入 2
3
2 1 3
样例输出 2
-1 3 3
样例解释 2
当 i=1 时,不存在满足条件的整数对 (l,r)。
样例输入 3
14
7 14 6 8 10 2 9 5 4 12 11 3 13 1
样例输出 3
5 3 3 7 3 3 3 5 3 3 5 3 3 3
数据范围
- 3≤N≤3×105;
- P 是 1 到 N 的一个排列;
- 输入中的所有数均为整数。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
8 |
N≤12 |
| 2 |
12 |
N≤200 |
| 3 |
16 |
N≤4000 |
| 4 |
10 |
对所有 2≤i≤N−1,均有 (Pi−1−Pi)(Pi+1−Pi)>0 |
| 5 |
24 |
N≤50000 |
| 6 |
30 |
无特殊限制 |