求调
查看原帖
求调
752102
leilei1楼主2024/10/25 18:32
#include<bits/stdc++.h>
using namespace std;

int n,m,q,a[100005],b[100005];

int read(){
	long long res=0;
	long long fl=1;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-') fl=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		res=res*10+ch-'0';
		ch=getchar();
	}
	return fl*res;
}

void dfs(int l,int r){
	if(l>r) return;
	for(int i=l;i<=r;i++){
		
	}
}

int main(){
	n=read(),m=read(),q=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
	}
	for(int i=1;i<=m;i++){
		b[i]=read();
	}
	while(q--){
		int l1=0,r1=0,l2=0,r2=0;
		l1=read(),r1=read(),l2=read(),r2=read();
		bool xf0=false;
		bool hf0=false;
		int xzmax=0,xzmin=2e9,xfmax=-2e9,xfmin=0;
		int hzmax=0,hzmin=2e9,hfmax=-2e9,hfmin=0;
		for(int i=l1;i<=r1;i++){
			if(a[i]>0) xzmax=max(xzmax,a[i]);xzmin=min(xzmin,a[i]);continue;
			if(a[i]<0) xfmax=max(xfmax,a[i]);xfmin=min(xfmin,a[i]);continue;
			xf0=true;
		}
		for(int i=l2;i<=r2;i++){
			if(b[i]>0) hzmax=max(hzmax,b[i]);hzmin=min(hzmin,b[i]);continue;
			if(b[i]<0) hfmax=max(hfmax,b[i]);hfmin=min(hfmin,b[i]);continue;
			hf0=true;
		}
		cout<<hzmax<<" "<<hfmax<<endl;
		if(hzmax!=2e9&&hfmax==-2e9){//后手有正没负
			if(xzmax==0&&xfmax!=-2e9){//先手没正有负
				if(xf0==true){//先手有0
					cout<<0<<endl;
					continue;
				}
				cout<<xfmax*hzmax<<endl;//没有0
				continue;
			}
			if(hf0==true){//后手有0
				cout<<0<<endl;
				continue;
			}
			if(xzmax!=2e9&&xfmax==-2e9){//先手有正没负
				cout<<xzmax*hzmin<<endl;
				continue;
			}
			if(xzmax!=2e9&&xfmax!=-2e9){//先手有负有正
				cout<<xzmax*hzmin<<endl;
				continue;
			}
		}
		if(hzmax==2e9&&hfmax!=-2e9){//后手没正有负
			if(xzmax!=0&&xfmax==-2e9){//先手有正没负
				if(xf0==true){//先手有0
					cout<<0<<endl;
					continue;
				}
				cout<<xzmin*hfmin<<endl;//没有0
				continue;
			}
			if(hf0==true){//后手有0
				cout<<0<<endl;
				continue;
			}
			if(xzmax==2e9&&xfmax!=-2e9){//先手没正有负
				cout<<xfmin*hfmax<<endl;
				continue;
			}
			if(xzmax!=2e9&&xfmax!=-2e9){//先手有正有负
				cout<<xfmin*hfmax<<endl;
				continue;
			}
		}
		if(hzmax!=2e9&&hfmax!=-2e9){//后手有正有负
			if(xf0==true){//先手有0
				cout<<0<<endl;
				continue;
			}
			if(xzmax!=0&&xfmax==-2e9){//先手有正没负
				cout<<xzmin*hfmin<<endl;
				continue;
			}
			if(xzmax==2e9&&xfmax!=-2e9){//先手没正有负
				cout<<xfmax*hzmax<<endl;
				continue;
			}
			if(xzmax!=2e9&&xfmax!=-2e9){//先手有正有负
				int cnt1=xzmin*hfmin,cnt2=xfmax*hzmax;
				cout<<max(cnt1,cnt2)<<endl;
				continue;
			}
		}
	}
	return 0;
}     
2024/10/25 18:32
加载中...