今年 noip T3
#include<bits/stdc++.h>
using namespace std;
#define N 500005
int c,n,m,q;
int a[N],b[N];
int x[N],y[N],z[N];
int suf[N];
int work(int *x,int *y,int n,int m){
y[0]=x[0]=-1;
int p=0;
for(int i=1;i<=m;i++){
if(y[i]>y[i-1]){
while(p<n&&x[p+1]<y[i])p++;
}else{
while(p&&x[p]>=y[i])p--;
if(p==0)return 0;
}
}
if(p==n)return 1;
else return 0;
}
signed main(){
freopen("expand.in","r",stdin);
freopen("expand.out","w",stdout);
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>c>>n>>m>>q;
for(int i=1;i<=n;i++)cin>>a[i],x[i]=a[i];
for(int i=1;i<=m;i++)cin>>b[i],y[i]=b[i];
if(x[1]==y[1])cout<<0;
else if(x[1]<y[1])cout<<work(x,y,n,m);
else cout<<work(y,x,m,n);
for(int op=1;op<=q;op++){
int kx,ky;
cin>>kx>>ky;
for(int i=1;i<=n;i++)x[i]=a[i];
for(int i=1;i<=n;i++)y[i]=b[i];
for(int i=1;i<=kx;i++){
int px,v;
cin>>px>>v;
x[px]=v;
}
for(int i=1;i<=ky;i++){
int py,v;
cin>>py>>v;
y[py]=v;
}
// if(op==7){
// cout<<endl;
// for(int i=1;i<=n;i++)cout<<x[i]<<' ';cout<<endl;
// for(int i=1;i<=n;i++)cout<<y[i]<<' ';cout<<endl;
// }
if(x[1]==y[1])cout<<0;
else if(x[1]<y[1])cout<<work(x,y,n,m);
else cout<<work(y,x,m,n);
}
return 0;
}
难道我复杂度算错了?