蹲个大佬帮忙康康cc函数
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int l,r;
const int N=1e5+10;
vector<int> a(N+1);
const int MAX_N = 1e5 + 5;
int n,q,p[MAX_N];
bool cc(int l,int r){
vector<int> k;
for(int i=l;i<=r;++i) k.push_back(a[i]);
sort(k.begin(),k.end());
do{
if(k[0]>k[1]||k[1]>k[2]||k[3]>k[4]||k[4]>k[5]||k[0]>k[2]||k[3]>k[5]) continue;
if(k[0]+k[1]>k[2]&&k[3]+k[4]>k[5]){
return 1;
}
}while(next_permutation(k.begin(),k.end()));
return 0;
}
bool check(int l,int r){
vector<int> now;
int len=r-l+1;
now.push_back(1);
for(int i=l;i<=r;++i) now.push_back(a[i]);
sort(now.begin()+1,now.end());
for(int i=1;i<=len-2;++i){
if(now[i]+now[i+1]>now[i+2]){
for(int j=i+3;j<=len-2;++j){
if(now[j]+now[j+1]>now[j+2]){
return 1;
}
}
}
}
for (int i = l; i <= r - 5; i++){
if(cc(i,i+5)) return 1;
}
return 0;
}
int main(){
cin>>n>>q;
for(int i=1;i<=n;++i) cin>>a[i];
while(q--){
cin>>l>>r;
if(r-l+1>=48) cout<<"YES"<<endl;
else{
if(check(l,r)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
return 0;
}