第一点显示: Wrong Answer.wrong answer On line 2 column 1, read f, expected m. 已经调了几个小时了
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e4;
int n,m;
int x,y;
int a[N+5],b[N+5];
map<int,int> q;
int read()
{
int res=0,f=1;
char c=getchar();
if(c<'0'||c>'9')
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while(c>='0'&&c<='9')
{
res=10*res+c-'0';
c=getchar();
}
return res*f;
}
struct ST
{
int l,r;
int max_ye;
int max_jr;
}t[4*N+5];
void build(int p,int l,int r)
{
t[p].l=l;
t[p].r=r;
if(l==r)
{
t[p].max_ye=a[l];
t[p].max_jr=b[l];
return;
}
int mid=(l+r)>>1;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
t[p].max_ye=max(t[p*2].max_ye,t[p*2+1].max_ye);
t[p].max_jr=max(t[p*2].max_jr,t[p*2+1].max_jr);
}
int ask(int p,int l,int r)
{
if(l<=t[p].l&&r>=t[p].r )
{
return t[p].max_jr ;
}
int val=0;
int mid=(t[p].l+t[p].r)>>1;
if(l<=mid)
{
val=max(val,ask(p*2,l,r));
}
if(r>mid)
{
val=max(val,ask(p*2+1,l,r));
}
return val;
}
int find(int p,int x)
{
if(t[p].l==t[p].r )
{
return t[p].max_ye ;
}
if(t[p*2].max_ye >x)
{
return find(p*2,x);
}
else
{
return find(p*2+1,x);
}
}
void solve1()
{
int Y=ask(1,q[y],q[y]);
int X=ask(1,q[x],q[x]);
if(Y<X)
{
printf("false\n");
return;
}
int w=0;
if(q[x]==q[y]+1)
{
w=1;
}
else
{
int W=ask(1,q[y]+1,q[x]-1);
if(W<X)
{
w=1;
}
}
if(!w)
{
printf("false\n");
return;
}
int num=q[x]-q[y]-1;
if(x-y-1==num)
{
printf("true\n");
return;
}
printf("maybe\n");
return;
}
void solve2()
{
int u=y;
y=find(1,y);
// cout<<endl<<"## "<<y<<endl;
//cout<<"@@@ "<<y<<endl;
if(q[x]==q[y])
{
printf("maybe\n");
return;
}
int X=ask(1,q[x],q[x]);
// cout<<X<<endl;
int w=0;
int W=ask(1,q[y],q[x]-1);
// cout<<W<<endl;
if(W>=X)
{
printf("false\n");
return;
}
printf("maybe\n");
return;
}
void solve3()
{
int u=x;
x=find(1,x);
if(q[y]+1==q[x])
{
printf("maybe\n");
return;
}
int W=ask(1,q[y]+1,q[x]-1);
if(W>=y)
{
printf("false\n");
return;
}
printf("maybe\n");
return;
}
signed main()
{
// freopen("P2471_1.in","r",stdin);
// freopen("56.out","w",stdout);
n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
q[a[i]]=i;
b[i]=read();
}
a[0]=-1e9-1;
b[0]=0;
a[n+1]=1e9+1;
b[n+1]=1e9+1;
q[-1e9-1]=0;
q[1e9+1]=n+1;
build(1,0,n+1);
m=read();
//cout<<endl<<"### "<<t[1].max_jr<<" "<<t[1].max_ye <<endl;
for(int i=1;i<=m;i++)
{
//cout<<i<<" ";
y=read();
x=read();
if(x<y)
{
printf("false\n");
continue;
}
if(x==y)
{
//printf("true\n");
printf("false\n");
continue;
}
if(q[y]&&q[x])
{
solve1();
continue;
}
if(!q[y]&&q[x])
{
solve2();
continue;
}
if(q[y]&&!q[x])
{
solve3();
continue;
}
if(!q[y]&&!q[x])
{
printf("maybe\n");
}
}
}