#P2211. 排列(arrange)
排列(arrange)
【题目描述】
你有一个长度为n的排列 𝑎1 ,𝑎2 , … ,𝑎𝑛 。
你需要对它进行 𝑞 次操作:每次给定 l,r,𝑘,代表把区间 𝑎[𝑙,r] 循环右移 𝑘 次。
每次移动过后,你需要回答整个排列是否存在三元上升子序列。
形式化地,即是否存在 i< 𝑗 <𝑘 使得 𝑎𝑖 <𝑎𝑗 < 𝑎𝑘 。
注:把一个序列 𝑏1 ,𝑏2, … . ,𝑏𝑚 环右移一次后,它会变成 𝑏𝑚 ,𝑏1 ,𝑏2, … ,𝑏(𝑚−1) 。 ## 【输入格式】 第一行一个整数 n,代表排列长度。
接下来一行 n个整数,依次代表 𝑎1 ,𝑎2 , … ,𝑎𝑛。
接下来一行一个整数 𝑞,代表询问次数。
接下来 𝑞 行,每行三个整数 𝑙,r,𝑘,意义见上。
【输出格式】
共 𝑞 行。每次操作完毕后,若存在三元上升子序列,输出一行 ”YES“,否则输出一行 ”NO“。
【样例1 输入】
7
7 5 6 3 4 2 1
5
4 5 1
2 5 2
2 6 3
2 7 3
1 7 4
【样例1 输出】
NO
YES
NO
YES
YES
【数据范围】
对于 40% 的数据,n,𝑞 ≤ 300。
对于 100% 的数据,1≤ n,𝑞 ≤120000。
保证每次询问的 𝑙,r,𝑘 都满足 𝑙 ≤ r ≤ n,且 0≤ 𝑘 ≤ r−l+1。