25pts玄关求调码风优良
查看原帖
25pts玄关求调码风优良
1043126
bssmessi楼主2024/10/25 20:38
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int n,m,q,a[N],b[N];
int amax[N][20],azmin[N][20],afmax[N][20],amin[N][20],bmax[N][20],bmin[N][20];
void prep(){
	for(int j=1;(1<<j)<=n;j++){
		for(int i=1;i<=n;i++){
			amax[i][j]=max(amax[i][j-1],amax[i+(1<<j-1)][j-1]);
			afmax[i][j]=max(afmax[i][j-1],afmax[i+(1<<j-1)][j-1]);
			amin[i][j]=min(amin[i][j-1],amin[i+(1<<j-1)][j-1]);
			azmin[i][j]=min(azmin[i][j-1],azmin[i+(1<<j-1)][j-1]);
		}
	}
	for(int j=1;(1<<j)<=m;j++){
		for(int i=1;i<=m;i++){
			bmax[i][j]=max(bmax[i][j-1],bmax[i+(1<<j-1)][j-1]);
			bmin[i][j]=min(bmin[i][j-1],bmin[i+(1<<j-1)][j-1]);
		}
	}
}
int query_amax(int l,int r){
	int k=log2(r-l+1);
	return max(amax[l][k],amax[r-(1<<k)+1][k]);
}
int query_amin(int l,int r){
	int k=log2(r-l+1);
	return min(amin[l][k],amin[r-(1<<k)+1][k]);
}
int query_afmax(int l,int r){
	int k=log2(r-l+1);
	return max(afmax[l][k],afmax[r-(1<<k)+1][k]);
}
int query_azmin(int l,int r){
	int k=log2(r-l+1);
	return min(azmin[l][k],azmin[r-(1<<k)+1][k]);
}
int query_bmax(int l,int r){
	int k=log2(r-l+1);
	return max(bmax[l][k],bmax[r-(1<<k)+1][k]);
}
int query_bmin(int l,int r){
	int k=log2(r-l+1);
	return min(bmin[l][k],bmin[r-(1<<k)+1][k]);
}
signed main(){
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		amax[i][0]=a[i];
		amin[i][0]=a[i];
		if(a[i]>=0){
			azmin[i][0]=a[i];
			afmax[i][0]=INT_MIN;
		}else{
			afmax[i][0]=a[i];
			azmin[i][0]=INT_MAX;
		}
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
		bmin[i][0]=b[i];
		bmax[i][0]=b[i];
	}
	prep();
	for(int i=1;i<=q;i++){
		int l1,r1,l2,r2;
		long long ans1,ans2;
		cin>>l1>>r1>>l2>>r2;
		int aamax=query_amax(l1,r1);
		int aamin=query_amin(l1,r1);
		int aazmin=query_azmin(l1,r1);
		int aafmax=query_afmax(l1,r1);
		int bbmax=query_bmax(l2,r2);
		int bbmin=query_bmin(l2,r2);
		if(bbmin>=0) ans1=aamax*bbmin;
		else ans1=aazmin*bbmin;
		if(bbmax>=0) ans2=aafmax*bbmax;
		else ans2=aamin*bbmax;
		cout<<max(ans1,ans2)<<"\n";
	}
    return 0;
}

2024/10/25 20:38
加载中...