| 比赛 |
2026.8.26 |
评测结果 |
WWATTTAAAWWWWWWWWWWW |
| 题目名称 |
interval |
最终得分 |
20 |
| 用户昵称 |
rzzakioi |
运行时间 |
7.804 s |
| 代码语言 |
C++ |
内存使用 |
6.62 MiB |
| 提交时间 |
2026-08-26 12:47:03 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,q,a[250005],b[250005],c[250005]/*,id[250005]*/;
//bool ans[250005];
map<int,int>mp;
int t[2005],sa[250005],sb[250005];
//struct node{
// int l,r;
//}qj[250005];
//bool operator <(const node &x,const node &y){
// if(id[x.l]==id[y.l])return x.r<y.r;
// return id[x.l]<id[y.l];
//}
int main(){
freopen("intervallavretni.in","r",stdin);
freopen("intervallavretni.out","w",stdout);
bool flag=1;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
if(a[i]!=1)flag=0;
}
if(flag){
for(int i=1;i<=n;i++){
c[i]=b[i];
}
sort(c+1,c+n+1);
int cnt=unique(c+1,c+n+1)-c-1;
for(int i=1;i<=cnt;i++)mp[c[i]]=i;
mp[c[0]]=0;
for(int i=1;i<=n;i++)b[i]=mp[b[i]];
while(q--){
memset(t,0,sizeof(t));
int l,r;
scanf("%d%d",&l,&r);
l++;r++;
for(int i=l;i<=r;i++){
t[b[i]]++;
}
bool flag=1;
if(c[1]>1){
printf("0 ");
continue;
}
for(int i=2;i<=cnt;i++){
if(t[i]&&!t[i-1]){
flag=0;
break;
}
else if(t[i]&&t[i-1]&&c[i]-c[i-1]>1){
flag=0;
break;
}
}
if(!flag){
printf("0 ");
continue;
}
else{
printf("1 ");
}
}
}
else{
for(int i=1;i<=n;i++){
sa[i]=sa[i-1];
sb[i]=sb[i-1];
if(a[i]==2)sa[i]++;
if(b[i]==2)sb[i]++;
}
while(q--){
int l,r;
scanf("%d%d",&l,&r);
l++,r++;
if(sb[r]-sb[l-1]<r-l+1){
printf("1 ");
}
else if(sb[r]-sb[l-1]==r-l+1&&sa[r]-sa[l-1]==r-l+1){
printf("1 ");
}
else printf("0 ");
}
}
return 0;
}