0分莫队求助
查看原帖
0分莫队求助
919160
xlifoy楼主2025/2/3 22:52
#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int maxn=1e5+5;

int a[maxn],p,cnt[maxn],n,m;
bool ans[maxn];

struct node{
	int l,r,id;
}q[maxn];

bool cmp(node x,node y){
	return x.l==y.l ? x.r<y.r : x.l<y.l;
}

inline void add(int x){
	if((++cnt[a[x]])==1) p++;
}

inline void sub(int x){
	if((--cnt[a[x]])==0) --p;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++){
		cin>>q[i].l>>q[i].r;
		q[i].id=i;
	}
	sort(q+1,q+1+m,cmp);
	int l=1,r=0;
	for(int i=1;i<=m;i++){
		while(q[i].l<l) add(--l);
		while(q[i].r>r) add(++r);
		while(q[i].l>l) sub(l++);
		while(q[i].r<r) sub(r--);
		if(p==(q[i].r-q[i].l+1)) ans[i]=true;
		
	}
	for(int i=1;i<=m;i++){
		if(ans[i]) cout<<"Yes\n";
		else cout<<"No\n";
	}
	return 0;
}
2025/2/3 22:52
加载中...