CSPS数学骗分
  • 板块学术版
  • 楼主米忽悠御姐
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/10/30 10:55
  • 上次更新2023/10/27 04:55:39
查看原帖
CSPS数学骗分
384903
米忽悠御姐楼主2022/10/30 10:55
#include<bits/stdc++.h>
using namespace std;
long long n,r1,l1,r2,l2,m,q,A[100001],B[100001],tst1[100001],tst2[100001],i,j;
int main()
{
//	freopen("game.in","r",stdin);
//	freopen("game.out","w",stdout);
	scanf("%lld%lld%lld",&n,&m,&q);
	for(i=1;i<=n;i++)
		scanf("%lld",&A[i]);
	for(i=1;i<=m;i++)
		scanf("%lld",&B[i]);
	long long lim_1,lim_2,lim_3,lim_4,max1,max2,min1,min2,ans1,ans2;
	for(i=1;i<=q;i++)
	{
		ans1=0;
		ans2=0;
		lim_1=lim_2=10e9+1;
		lim_3=lim_4=-10e9-1;
		min1=min2=10e9+1;
		max1=max2=-10e9-1;
		scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
		for(j=l1;j<=r1;j++)
		{
			if(A[j]>max1) max1=A[j];
			if(A[j]<min1) min1=A[j];
			if(abs(A[j])<abs(lim_1)&&A[j]>=0) lim_1=A[j];
			if(abs(A[j])<abs(lim_3)&&A[j]<=0) lim_3=A[j];
		}
		for(j=l2;j<=r2;j++)
		{
			if(B[j]>max2) max2=B[j];
			if(B[j]<min2) min2=B[j];
			if(abs(B[j])<abs(lim_2)&&B[j]>=0) lim_2=B[j];
			if(abs(B[j])<abs(lim_4)&&B[j]<=0) lim_4=B[j];
		}
	//	cout<<max1<<endl<<max2<<endl<<min1<<endl<<min2<<endl<<lim_1<<endl;
		if((min1==0&&min2<0)||(min2>0&&min2==0)||(max1>0&&max2>0&&min1<0&&min2<0&&lim_1==0))
		{
			printf("0\n");
			continue;
		}
		if(min1>0&&min2>0)
		{
			ans1=max1*min2;
			printf("%lld\n",ans1);
			continue;
		}
		if(min1>0&&min2<0)
		{
			ans1=min1*min2;
			printf("%lld\n",ans1);
			continue;
		}
		if(max1>0&&min1<0&&min2>0)
		{
			ans1=max1*min2;
			printf("%lld\n",ans1);
			continue;
		}
		if(max1>0&&max2>0&&min1<0&&min2<0)
		{
			ans1=lim_1*min2;
			ans2=lim_3*max2;
			printf("%lld\n",max(ans1,ans2));
			continue;
		} 
		if(max1>0&&min1<0&&max2<0)
		{
			ans1=min1*max2;
			printf("%lld\n",ans1);
			continue;
		}
		if(max1<0)
		{
			ans1=max1*max2;
			printf("%lld\n",ans1);
			continue;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
2022/10/30 10:55
加载中...