做的部分分,但是0分,求捞
查看原帖
做的部分分,但是0分,求捞
622724
l_615楼主2023/10/15 09:04
#include<bits/stdc++.h>
using namespace std;
int const N=1e5+10;
int a[N],b[N];
int n,m,q;
int main()
{
	scanf("%d%d%d",&n,&m,&q);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=m;i++)
	{
		scanf("%d",&b[i]);
	}
	int l1,r1,l2,r2;
	for(int w=1;w<=q;w++)
	{
		scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
		if(l1!=r1&&l2!=r2)//性质1 
		{
			int maxn=-INT_MAX,minn=INT_MAX;
			for(int i=l1;i<=r1;i++)
			{
				maxn=max(maxn,a[i]);
			}
			for(int i=l2;i<=r2;i++)
			{
				minn=min(minn,b[i]);
			}
			printf("%lld\n",maxn*minn);
		}else{//性质2 
			if(l1==r1)
			{
				if(a[l1]==0){
					printf("0\n");
				}else if(a[l1]>0)
				{
					int minn=INT_MAX;
					for(int i=l2;i<=r2;i++)
					{
						minn=min(minn,b[i]);
					}
					printf("%lld\n",a[l1]*minn);
				}else if(a[l1]<0)
				{
					int maxn=-INT_MAX;
					for(int i=l2;i<=r2;i++)
					{
						maxn=max(maxn,b[i]);
					}
					printf("%lld\n",a[l1]*maxn);
				}
			}
			if(l2==r2){
				if(b[l2]==0)
				{
					printf("0\n");
				}else if(b[l2]<0){
					int minn=INT_MAX;
					for(int i=l1;i<=r1;i++)
					{
						minn=min(minn,a[i]);
					}
					printf("%lld\n",minn*b[l2]);
				}else if(b[l2]>0){
					int maxn=-INT_MAX;
					for(int i=l1;i<=r1;i++)
					{
						maxn=max(maxn,a[i]);
					}
					printf("%lld\n",maxn*b[l2]);
				}
			}
		}
	}
	return 0;
}
2023/10/15 09:04
加载中...