0分RE,求调
查看原帖
0分RE,求调
1660805
fuzichen2025楼主2025/8/3 14:39
#include<bits/stdc++.h>
#define maxn 100005
typedef long long ll;
using namespace std;
int n, m, q;
int a[maxn], b[maxn];
int sta[4][maxn][20], stb[2][maxn][20];
int lg[maxn], pre[maxn];
int querymaxa(int id, int l, int r)
{
	int k=log(r-l+1.0)/log(2.0);
	return max(sta[id][l][k], sta[id][r-(1<<k)+1][k]);
}
int querymina(int id, int l, int r)
{
	int k=log(r-l+1.0)/log(2.0);
	return min(sta[id][l][k], sta[id][r-(1<<k)+1][k]);
}
int querymaxb(int id, int l, int r)
{
	int k=log(r-l+1.0)/log(2.0);
	return max(stb[id][l][k], stb[id][r-(1<<k)+1][k]);
}
int queryminb(int id, int l, int r)
{
	int k=log(r-l+1.0)/log(2.0);
	return min(stb[id][l][k], stb[id][r-(1<<k)+1][k]);
}
int main()
{
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++) cin>>b[i];
	for(int i=1;i<=n;i++)
	{
		pre[i]=pre[i-1]+(a[i]==0);
		sta[0][i][0]=a[i];
		sta[1][i][0]=(a[i]<=0?1e9:a[i]);
		sta[2][i][0]=a[i];
		sta[3][i][0]=(a[i]>=0?-1e9:a[i]);
	}
	for(int i=1;i<=20;i++)
	{
		for(int j=1;j+(1<<i)-1<=n;j++)
		{
			sta[0][j][i]=max(sta[0][j][i-1], sta[0][j+(1<<i-1)][i-1]);
			sta[1][j][i]=min(sta[1][j][i-1], sta[1][j+(1<<i-1)][i-1]);
			sta[2][j][i]=min(sta[2][j][i-1], sta[2][j+(1<<i-1)][i-1]);
			sta[3][j][i]=max(sta[3][j][i-1], sta[3][j+(1<<i-1)][i-1]);
		}
	}
	for(int i=1;i<=20;i++)
	{
		for(int j=1;j+(1<<i)-1<=n;j++)
		{
			stb[0][j][i]=max(stb[0][j][i-1], stb[0][j+(1<<i-1)][i-1]);
			stb[1][j][i]=min(stb[1][j][i-1], stb[1][j+(1<<i-1)][i-1]);
		}
	}
	while(q--)
	{
		ll ans=-1e8;
		int l1, r1, l2, r2;
		cin>>l1, r1, l2, r2;
		if(pre[r1]-pre[l1-1]>0) ans=0;
		if(querymaxa(0, l1, r1)>0)
		{
			if(queryminb(1, l2, r2)>0)
			{
				ans=max(ans, 1ll*querymina(1, l1, r1)*queryminb(1, l2, r2));
			}else{
				ans=max(ans, 1ll*querymaxa(1, l1, r1)*queryminb(1, l2, r2));
			}
		}
		if(querymina(2, l1, r1)>0)
		{
			if(querymaxb(0, l2, r2)<0)
			{
				ans=max(ans, 1ll*querymaxa(3, l1, r1)*querymaxb(0, l2, r2));
			}else{
				ans=max(ans, 1ll*querymina(2, l1, r1)*querymaxb(0, l2, r2));
			}
		}
		cout<<ans<<'\n';
	}
	return 0;
}
2025/8/3 14:39
加载中...