样例过了,全WA,救命……
查看原帖
样例过了,全WA,救命……
828759
linruyi楼主2023/10/5 07:58
#include<bits/stdc++.h>
using namespace std;
long long x[100000],h[100000];
long long n,m,q;
long long l1,r1,l2,r2;
long long xz,xf,x0;
long long hz,hf,h0;
long long x_minz()
{
	long long ans=1000000;
	for(int i=l1;i<=r1;i++)
		if(x[i]>0)ans=min(ans,x[i]);
	return ans;
}
long long x_minf()
{
	long long ans=1000000;
	for(int i=l1;i<=r1;i++)
		if(x[i]<0)ans=min(ans,x[i]);
	return ans;
}
long long x_maxz()
{
	long long ans=-1000000;
	for(int i=l1;i<=r1;i++)
		if(x[i]>0)ans=max(ans,x[i]);
	return ans;
}
long long x_maxf()
{
	long long ans=-1000000;
	for(int i=l1;i<=r1;i++)
		if(x[i]<0)ans=max(ans,x[i]);
	return ans;
}


long long h_minz()
{
	long long ans=1000000;
	for(int i=l2;i<=r2;i++)
		if(h[i]>0)ans=min(ans,h[i]);
	return ans;
}
long long h_minf()
{
	long long ans=1000000;
	for(int i=l2;i<=r2;i++)
		if(h[i]<0)ans=min(ans,h[i]);
	return ans;
}
long long h_maxz()
{
	long long ans=-1000000;
	for(int i=l2;i<=r2;i++)
		if(h[i]>0)ans=max(ans,h[i]);
	return ans;
}
long long h_maxf()
{
	long long ans=-1000000;
	for(int i=l2;i<=r2;i++)
		if(h[i]<0)ans=max(ans,h[i]);
	return ans;
}
void ycl()
{
    xz=xf=x0=0;
	for(int i=l1;i<=r1;i++)
	{
		if(x[i]>0)xz=1;
		if(x[i]<0)xf=1;
        if(x[i]==0)x0=1;
	}
    hz=hf=h0=0;
	for(int i=l2;i<=r2;i++)
	{
		if(h[i]>0)hz=1;
		if(h[i]<0)hf=1;
        if(h[i]==0)h0=1;
	}
	return;
}
long long rui()
{
    long long x1=0,h1=0;
    if(!hf)
    {
        if(xz)
        {
            x1=x_maxz();
            if(!h0) h1=h_minz();
        }
        else
        {
            if(!x0) x1=x_maxf();
            h1=h_maxz();
        }
    }
    else if(!hz)
    {
        if(xf)
        {
            x1=x_minf();
            if(!h0) h1=h_maxf();
        }
        else
        {
            if(!x0)x1=x_minz();
            h1=h_minf();
        }
    }
    else
    {
        if(x0)
        {
            return 0;
        } 
        else if(!xz)
        {
            x1=x_maxf();
            h1=h_maxz();
        }
        else if(!xf)
        {
            x1=x_minz();
            h1=h_minf();
        }
        else
        {
            return max(x_maxf()*h_maxz() , x_minz()*h_minf());
        }
    }
    return x1*h1;
}

int main(){
    cin>>n>>m>>q;
    for(int i=1;i<=n;i++) cin>>x[i];
    for(int i=1;i<=m;i++) cin>>h[i];
    while(q--)
    {
        cin>>l1>>r1>>l2>>r2;
        ycl();
        cout<<rui()<<endl;
    }
    return 0;
}
2023/10/5 07:58
加载中...