%%%
by Chancylaser @ 2023-07-31 19:58:03
求解释的再详细一点QWQ(我错了23 30 37)
by Lyy450605 @ 2023-07-31 21:50:16
@[Lyy450605](/user/930117) 特判b中全是0的情况,并检查自己的极限值赋的是否过大
by sunjiangnan55 @ 2023-08-01 07:55:10
谢谢,把大/小于改成了大/小于等于,就过了
```cpp
//查询
bool pla,plb,mia,mib;//a/b数组是否有正数/负数
int tas,tab,tbs,tbb,tmp0,tmp1;//tmp0最小的正数,最大的负数
for(int i=1;i<=q;i++){
pla=plb=mia=mib=0;
cin>>l1>>r1>>l2>>r2;
tas=query(l1,r1,1);
tab=query(l1,r1,2);
tbs=query(l2,r2,3);
tbb=query(l2,r2,4);
tmp0=Findn(l1,r1,0);
tmp1=Findn(l1,r1,1);
if(tas<=0) mia=1;//这里
if(tab>=0) pla=1;
if(tbs<=0) mib=1;
if(tbb>=0) plb=1;
if(mia==0&&pla==1){//a:全是正数
if(mib==0&&plb==1){
cout<<1ll*tab*tbs<<"\n";
}
else{
//cout<<1ll*tas*tbs<<"\n";
if(tmp0==0) cout<<0<<"\n";
else cout<<1ll*tas*tbs<<"\n";
}
continue;
}
if(mia==1&&pla==0){//a:全是负数
if(mib==1&&plb==0) cout<<1ll*tas*tbb<<"\n";
else{
//cout<<1ll*tab*tbb<<"\n";
if(tmp1==0) cout<<0<<"\n";
else cout<<1ll*tab*tbb<<"\n";
}
continue;
}
if(mia==1&&pla==1){//a:有正有负
if(mib==0&&plb==1) {cout<<1ll*tab*tbs<<"\n"; continue;}
if(mib==1&&plb==0) {cout<<1ll*tas*tbb<<"\n"; continue;}
if(mib==1&&plb==1){//a:最小的正数和最大的负数 -》 最小的负数和最大的正数
cout<<max(1ll*tmp0*tbs,1ll*tmp1*tbb)<<"\n";
}
continue;
}
if(mib==0&&plb==0){
cout<<0<<"\n";
}
```
by Lyy450605 @ 2023-08-01 08:39:20
@sunjiangnan
一个关注已送达 (*^_^*)
by Lyy450605 @ 2023-08-01 10:01:20
@[sunjiangnan55](/user/448871)
谢谢
by Lyy450605 @ 2023-08-01 10:02:21