| 比赛 |
2026.8.26 |
评测结果 |
AAWWWWWWWWWWWWWWWWWW |
| 题目名称 |
interval |
最终得分 |
10 |
| 用户昵称 |
exil |
运行时间 |
6.541 s |
| 代码语言 |
C++ |
内存使用 |
42.42 MiB |
| 提交时间 |
2026-08-26 11:48:58 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[250005],b[250005];
int c[250005];
struct node{
int l;
int r;
int sum0,sum1,sum2,sumx;
};
node tp[4000005];
node shu[4000005];
void jianshu(int k,int l,int r){
tp[k]=(node){l,r,0,0};
if(l==r){
if(a[l]==0)tp[k].sum0=1;
else if(a[l]==1)tp[k].sum1=1;
else if(a[l]==2)tp[k].sum2=1;
else tp[k].sumx=1;
return;
}
int mid=(l+r)/2;
jianshu(k<<1,l,mid);
jianshu(k<<1|1,mid+1,r);
tp[k].sum0=tp[k<<1].sum0+tp[k<<1|1].sum0;
tp[k].sum1=tp[k<<1].sum1+tp[k<<1|1].sum1;
tp[k].sum2=tp[k<<1].sum2+tp[k<<1|1].sum2;
tp[k].sumx=tp[k<<1].sumx+tp[k<<1|1].sumx;
}
void jianshu2(int k,int l,int r){
shu[k]=(node){l,r,0,0};
if(l==r){
if(b[l]==0)shu[k].sum0=1;
else if(b[l]==1)shu[k].sum1=1;
else if(b[l]==2)shu[k].sum2=1;
else shu[k].sumx=1;
return;
}
int mid=(l+r)/2;
jianshu2(k<<1,l,mid);
jianshu2(k<<1|1,mid+1,r);
shu[k].sum0=shu[k<<1].sum0+shu[k<<1|1].sum0;
shu[k].sum1=shu[k<<1].sum1+shu[k<<1|1].sum1;
shu[k].sum2=shu[k<<1].sum2+shu[k<<1|1].sum2;
shu[k].sumx=shu[k<<1].sumx+shu[k<<1|1].sumx;
}
int cha0(int k,int l,int r){
if(tp[k].l>r || tp[k].r<l)return 0;
if(tp[k].l>=l && tp[k].r<=r){
return tp[k].sum0;
}
return cha0(k<<1,l,r)+cha0(k<<1|1,l,r);
}
int cha1(int k,int l,int r){
if(tp[k].l>r || tp[k].r<l)return 0;
if(tp[k].l>=l && tp[k].r<=r){
return tp[k].sum1;
}
return cha1(k<<1,l,r)+cha1(k<<1|1,l,r);
}
int cha2(int k,int l,int r){
if(tp[k].l>r || tp[k].r<l)return 0;
if(tp[k].l>=l && tp[k].r<=r){
return tp[k].sum2;
}
return cha2(k<<1,l,r)+cha2(k<<1|1,l,r);
}
int chax(int k,int l,int r){
if(tp[k].l>r || tp[k].r<l)return 0;
if(tp[k].l>=l && tp[k].r<=r){
return tp[k].sumx;
}
return chax(k<<1,l,r)+chax(k<<1|1,l,r);
}
int echa0(int k,int l,int r){
if(shu[k].l>r || shu[k].r<l)return 0;
if(shu[k].l>=l && shu[k].r<=r){
return shu[k].sum0;
}
return echa0(k<<1,l,r)+echa0(k<<1|1,l,r);
}
int echa1(int k,int l,int r){
if(shu[k].l>r || shu[k].r<l)return 0;
if(shu[k].l>=l && shu[k].r<=r){
return shu[k].sum1;
}
return echa1(k<<1,l,r)+echa1(k<<1|1,l,r);
}
int echa2(int k,int l,int r){
if(shu[k].l>r || shu[k].r<l)return 0;
if(shu[k].l>=l && shu[k].r<=r){
return shu[k].sum2;
}
return echa2(k<<1,l,r)+echa2(k<<1|1,l,r);
}
signed main(){
freopen("intervallavretni.in","r",stdin);
freopen("intervallavretni.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,q;
cin>>n>>q;
for(int i = 1;i<=n;i++){
cin>>a[i]>>b[i];
}
if(n<=100 && q<=100){
for(int i = 1;i<=q;i++){
int l,r1;
cin>>l>>r1;
l++;
r1++;
for(int j = l;j<=r1;j++){
c[j]=a[j];
}
int e=0;
int q=0;
while(e==0){
e=1;
int w=0;
for(int j = l;j<=r1;j++){
if(c[j]<b[j]){
int pan=0;
for(int k = l;k<=r1;k++){
if(k==j)continue;
if(c[j]==c[k]){
w=1;
pan=1;
break;
}
}
if(pan==1){
c[j]++;
}
}
if(c[j]!=b[j])e=0;
}
if(e==1){
// for(int j = l;j<=r1;j++){
// cout<<c[j]<<" ";
// }
// cout<<endl;
break;
}
if(w==0){
q=1;
cout<<0<<" ";
break;
}
}
if(q==0)cout<<1<<" ";
}
return 0;
}
else{
jianshu(1,1,n);
jianshu2(1,1,n);
for(int i = 1;i<=q;i++){
int l,r;
cin>>l>>r;
if(chax(1,l,r)!=0)cout<<0<<" ";
else{
if((cha0(1,l,r)!=0 && echa0(1,l,r)==0) || (cha0(1,l,r)==0 && echa0(1,l,r)!=0))cout<<0<<" ";
else if((cha1(1,l,r)!=0 && echa1(1,l,r)==0) || (cha1(1,l,r)==0 && echa1(1,l,r)!=0))cout<<0<<" ";
else if((cha2(1,l,r)!=0 && echa2(1,l,r)==0) || (cha2(1,l,r)==0 && echa2(1,l,r)!=0))cout<<0<<" ";
else{
if(cha0(1,l,r)<echa0(1,l,r))cout<<0<<" ";
else{
int yi=0;
if(cha0(1,l,r)>echa0(1,l,r)){
yi+=cha0(1,l,r)-echa0(1,l,r);
}
if(cha1(1,l,r)+yi<echa1(1,l,r))cout<<"0"<<" ";
else{
int er=0;
if(cha1(1,l,r)+yi>echa1(1,l,r)){
er+=cha1(1,l,r)+yi-echa1(1,l,r);
}
if(cha2(1,l,r)+er!=echa2(1,l,r))cout<<"0"<<" ";
else cout<<"1"<<" ";
}
}
}
}
}
}
return 0;
}