CF1707E.Replace
NOI/NOI+/CTSC
通过率:0%
时间限制:1.50s
内存限制:1024MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an integer array a1,…,an, where 1≤ai≤n for all i.
There's a "replace" function f which takes a pair of integers (l,r), where l≤r, as input and outputs the pair $$f\big( (l, r) \big)=\left(\min\{a_l,a_{l+1},\ldots,a_r\},\, \max\{a_l,a_{l+1},\ldots,a_r\}\right).$$
Consider repeated calls of this function. That is, from a starting pair (l,r) we get f((l,r)), then f(f((l,r))), then f(f(f((l,r)))), and so on.
Now you need to answer q queries. For the i-th query you have two integers li and ri (1≤li≤ri≤n). You must answer the minimum number of times you must apply the "replace" function to the pair (li,ri) to get (1,n), or report that it is impossible.
给你一个整数数组 a1,…,an,其中对所有 i 均满足 1≤ai≤n。
定义一个“替换”函数 f,其输入为一对整数 (l,r)(满足 l≤r),输出为
f((l,r))=(min{al,al+1,…,ar},max{al,al+1,…,ar}).
考虑对该函数进行重复调用:即从初始对 (l,r) 出发,依次得到 f((l,r))、f(f((l,r)))、f(f(f((l,r)))),依此类推。
现在你需要回答 q 个查询。对于第 i 个查询,给定两个整数 li 和 ri(满足 1≤li≤ri≤n),你必须求出:将“替换”函数作用于 (li,ri) 所需的最少次数,使得结果恰好为 (1,n);若不可能达到 (1,n),则报告不可能。
输入格式
The first line contains two positive integers n, q (1≤n,q≤105) — the length of the sequence a and the number of the queries.
The second line contains n positive integers a1,a2,…,an (1≤ai≤n) — the sequence a.
Each line of the following q lines contains two integers li, ri (1≤li≤ri≤n) — the queries.
第一行包含两个正整数 n、q(1≤n,q≤105)——分别表示序列 a 的长度和查询的数量。
第二行包含 n 个正整数 a1,a2,…,an(1≤ai≤n)——即序列 a。
接下来的 q 行中,每行包含两个整数 li、ri(1≤li≤ri≤n)——表示一次查询。
输出格式
For each query, output the required number of times, or −1 if it is impossible.
对于每个查询,输出所需的次数;如果不可能,则输出 −1。
输入输出样例
输入#1
5 6 2 5 4 1 3 4 4 1 5 1 4 3 5 4 5 2 3
输出#1
-1 0 1 2 3 4
输入#2
6 3 2 3 4 6 1 2 5 6 2 5 2 3
输出#2
5 1 3
输入#3
5 3 3 2 2 4 1 2 5 1 3 1 5
输出#3
-1 -1 0
说明/提示
In the first example, n=5 and a=[2,5,4,1,3].
For the first query: (4,4)→(1,1)→(2,2)→(5,5)→(3,3)→(4,4)→…, so it's impossible to get (1,5).
For the second query, you already have (1,5).
For the third query: (1,4)→(1,5).
For the fourth query: (3,5)→(1,4)→(1,5).
For the fifth query: (4,5)→(1,3)→(2,5)→(1,5).
For the sixth query: (2,3)→(4,5)→(1,3)→(2,5)→(1,5).
在第一个例子中,n=5 且 a=[2,5,4,1,3]。
对于第一个查询:(4,4)→(1,1)→(2,2)→(5,5)→(3,3)→(4,4)→…,因此无法得到 (1,5)。
对于第二个查询,你已经拥有 (1,5)。
对于第三个查询:(1,4)→(1,5)。
对于第四个查询:(3,5)→(1,4)→(1,5)。
对于第五个查询:(4,5)→(1,3)→(2,5)→(1,5)。
对于第六个查询:(2,3)→(4,5)→(1,3)→(2,5)→(1,5)。
输入解题思路,AI测评打分。不知道怎么写?