组成三角形
时间限制:5 秒
空间限制:256 MB
你有 n 根棍子,编号从 1 到 n,第 i 根棍子的长度为 ai。
你需要回答 q 个询问。每个询问给出两个整数 l 和 r(1≤l<r≤n,r−l+1≥6)。判断是否可以从编号在 [l,r] 内的棍子中选出 6 根不同的棍子,组成 2 个非退化三角形∗。
∗三边长分别为 a,b,c 的三角形称为非退化的,当且仅当:
- a<b+c,
- b<a+c,且
- c<a+b。
输入格式
第一行包含两个整数 n 和 q(6≤n≤105,1≤q≤105)—— 棍子数量和询问数量。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)—— 第 i 根棍子的长度。
接下来 q 行,每行包含两个整数 l 和 r(1≤l≤r≤n,r−l+1≥6)—— 询问的区间。
输出格式
对于每个询问,如果能够组成 2 个三角形,输出 YES;否则输出 NO。大小写任意。
样例输入
10 5
5 2 2 10 4 10 6 1 5 3
1 6
2 7
2 8
5 10
4 10
样例输出
YES
NO
YES
NO
YES
样例解释
- 第一个询问:棍长度为 [5,2,2,10,4,10]。可选出 [2,4,5] 和 [2,10,10] 组成两个三角形。
- 第二个询问:[2,2,10,4,10,6],无法组成两个三角形。
- 第三个询问:[2,2,10,4,10,6,1],可选出 [1,2,2] 和 [4,10,10]。
- 第四个询问:[4,10,6,1,5,3],无法组成两个三角形。
- 第五个询问:[10,4,10,6,1,5,3],可选出 [1,10,10] 和 [3,4,5]。