比赛 2026.8.26 评测结果 EEEWWWEEWEEEEWEEEEEE
题目名称 interval 最终得分 0
用户昵称 yyswys 运行时间 3.492 s
代码语言 C++ 内存使用 7.60 MiB
提交时间 2026-08-26 11:01:12
显示代码纯文本
#include<bits/stdc++.h>
#define rep(i,b,n) for(int i=b;i<=n;++i)
#define lb(x) (x&(-x))
using namespace std;
const int N = 200005;
int n,m,a[N],b[N+3],pre[N+3],lst[N+3],bns[N+3],mn[N+3];
void upd(int x,int d){for(int i=x;i<=N;i+=lb(i)) mn[i] = min(mn[i],d);}
int qy(int l) {
	int r=0,x;for(int i=19;~i;i--) {if((x=r+(1<<i))>N+1) continue;if(mn[x]>=l) r = x;}
	return r;
}
struct Que{int l,r,id;}q[N+3],hs[N+3];
bool cmp(Que u,Que v){return u.r > v.r;}
int c[N];
int qmax(int l,int r){
	int ans=0;
	while(1){ans=ans>b[r]?ans:b[r];
	if(r==l) break;
	for(r-=1;r-1>=lb(r);r-=lb(r)){
		ans=ans>c[r]?ans:c[r];
	}
		
	}
	return ans;
}
int main()
{
	freopen("intervallavretni.in","r",stdin);
	freopen("intervallavretni.out","w",stdout);
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	memset(mn,0x3f,sizeof(mn));
	cin>>n>>m;
	rep(i,1,n) {
		cin>>a[i]>>b[i];
		b[i]--;
		c[i]=b[i];
		for(int j=1;j<lb(i);j<<=1) c[i]=c[i]>c[i-j]?c[i]:c[i-j];
		pre[i] = lst[b[i]]; lst[b[i]] = i;
	}
	rep(i,0,N) upd(i+1,lst[i]);
	rep(i,1,m){ cin>>q[i].l>>q[i].r,q[i].id=i;q[i].l++;q[i].r++;hs[i].l=q[i].l,hs[i].r=q[i].r;}
	sort(q+1,q+m+1,cmp);
	int j=n;
	for(int i=1;i<=m;++i) {
		while(j>q[i].r) upd(b[j]+1,pre[j]),j--;
		bns[q[i].id] = qy(q[i].l);
	}
	rep(i,1,m){
		bns[i]++;
		if(bns[i]>qmax(hs[i].l,hs[i].r)){
			cout<<1<<" ";
		}else{
			cout<<0<<" ";
		}
	}
	return 0;
}