#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。