40分求助
查看原帖
40分求助
225301
大珂学家楼主2022/10/23 11:07
#include<bits/stdc++.h>
using namespace std;
int n,a[500000],b[500000],c[500000],t=0,m1[2],m0,sbccf[3]={0};
bool m=0;
bool check(int d,int e)
{
	bool sd1=0,sd2=0,sd3=0,se1=0,se2=0,se3=0,s=0;
	sbccf[0]=a[d]+a[e]+b[d]+b[e]+c[d]+c[e];
	if(a[d]==a[e]&&sd1==0&&se1==0)
	{
		sd1=1;
		se1=1;
		sbccf[0]=sbccf[0]-a[d]-a[d];
		s++;
		if(sbccf[1]==0) sbccf[1]=a[d];
		else if(sbccf[2]==0) sbccf[2]=a[d];
	}
	if(a[d]==b[e]&&sd1==0&&se2==0)
	{
		sd1=1;
		se2=1;
		s++;
		sbccf[0]=sbccf[0]-a[d]-a[d];
		if(sbccf[1]==0) sbccf[1]=a[d];
		else if(sbccf[2]==0) sbccf[2]=a[d];
	}
	if(a[d]==c[e]&&sd1==0&&se3==0)
	{
		sd1=1;
		se3=1;
		s++;
		sbccf[0]=sbccf[0]-a[d]-a[d];
		if(sbccf[1]==0) sbccf[1]=a[d];
		else if(sbccf[2]==0) sbccf[2]=a[d];
	}
	if(b[d]==a[e]&&sd2==0&&se1==0)
	{
		sd2=1;
		se1=1;
		s++;
		sbccf[0]=sbccf[0]-b[d]-b[d];
		if(sbccf[1]==0) sbccf[1]=b[d];
		else if(sbccf[2]==0) sbccf[2]=b[d];
	}
	if(b[d]==b[e]&&sd2==0&&se2==0)
	{
		sd2=1;
		se2=1;
		s++;
		sbccf[0]=sbccf[0]-b[d]-b[d];
		if(sbccf[1]==0) sbccf[1]=b[d];
		else if(sbccf[2]==0) sbccf[2]=b[d];
	}
	if(b[d]==c[e]&&sd2==0&&se3==0)
	{
		sd2=1;
		se3=1;
		s++;
		sbccf[0]=sbccf[0]-b[d]-b[d];
		if(sbccf[1]==0) sbccf[1]=b[d];
		else if(sbccf[2]==0) sbccf[2]=b[d];
	}
	if(c[d]==a[e]&&sd3==0&&se1==0)
	{
		sd3=1;
		se1=1;
		s++;
		sbccf[0]=sbccf[0]-c[d]-c[d];
		if(sbccf[1]==0) sbccf[1]=c[d];
		else if(sbccf[2]==0) sbccf[2]=c[d];
	}
	if(c[d]==b[e]&&sd3==0&&se2==0)
	{
		sd3=1;
		se2=1;
		s++;
		sbccf[0]=sbccf[0]-c[d]-c[d];
		if(sbccf[1]==0) sbccf[1]=c[d];
		else if(sbccf[2]==0) sbccf[2]=c[d];
	}
	if(c[d]==c[e]&&sd3==0&&se3==0)
	{
		sd1=3;
		se1=3;
		s++;
		sbccf[0]=sbccf[0]-c[d]-c[d];
		if(sbccf[1]==0) sbccf[1]=c[d];
		else if(sbccf[2]==0) sbccf[2]=c[d];
	}
	if(s>=2) return 1;
	else return 0;
}
int main()
{
	//freopen("elf.in","r",stdin);
	//freopen("elf.out","w",stdout);
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i]>>b[i]>>c[i];
		if(t<pow(min(min(a[i],b[i]),c[i]),3)/4)
		{
			m0=i+1;
			t=pow(min(min(a[i],b[i]),c[i]),3)/4;
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			sbccf[0]=0;
			sbccf[1]=0;
			sbccf[2]=0;
			if(check(i,j))
			{
				check(i,j);
				if(t<pow(min(min(sbccf[0],sbccf[1]),sbccf[2]),3)/4)
				{
					m=1;
					m1[0]=i;
					m1[1]=j;
					t=pow(min(min(sbccf[0],sbccf[1]),sbccf[2]),3)/4;
				}
			}
		}
	}
	if(m==0) cout<<m<<endl<<m0<<endl<<t;
	if(m==1) cout<<m<<endl<<m1[0]<<" "<<m1[1]<<endl<<t;
}

如图

2022/10/23 11:07
加载中...