位置 i 要成为独占亮源,左右半径 s 以内不能出现大于等于 ri 的其他读数。用单调栈求出每个位置左右最近的「大于等于自己」的下标,再按距离和 s 比较即可。
边境天文台要给当晚的测光记录做标注。值班员需要找出所有「独占亮源」测站,并把它们的编号从小到大写入观测日志。
沿子午线依次布置了 p 座测光仪,编号为 1∼p,第 i 座的读数是整数 ri。台站规程规定了一个观测半径 s:位置 i 被记为独占亮源,当且仅当对所有满足 1≤j≤p 且 1≤∣j−i∣≤s 的编号 j,都有 ri>rj。也就是说,i 必须严格高于左右各至多 s 座以内的每一座测光仪。
特别地,当 s=0 时,每一座测光仪都记为独占亮源。
测站个数 p 满足 1≤p≤ 200000,观测半径 s 满足 0≤s≤ 200000,各座读数满足 −1000000000 ≤ri≤ 1000000000。
第一行两个整数 p、s(1≤p≤ 200000,0≤s≤ 200000),表示测站个数和观测半径。
第二行 p 个整数 r1,r2,…,rp(−1000000000 ≤ri≤ 1000000000),表示各座读数。
第一行输出一个整数 c,表示独占亮源的个数。
第二行输出 c 个严格递增的整数,即这些测站的编号;若 c=0,则第二行输出空行。
输入
6 2
2 8 1 5 9 3
输出
2
2 5
说明
观测半径为 2。
2 的读数 8 高于左右半径内的 2、1、5,可以入选。5 的读数 9 高于半径内的 1、5、3,可以入选。输入
4 0
1 1 1 1
输出
4
1 2 3 4
说明
s=0,规程要求每一座都记为独占亮源。
输入
3 1
5 5 4
输出
0
说明
相邻读数无法严格高于对方,三座都不能成为独占亮源,因此第二行为空行。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册