70分
查看原帖
70分
499682
operator_楼主2022/10/22 11:07
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,op,ansa,ansb,maxn,maxi,maxiex,maxop;
inline int read()
{
	int s=0,m=0;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')m=1;ch=getchar();}
	while( isdigit(ch))s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
	return m?-s:s;
}
struct QWQ{
	int r1,r2,r3;
	int id;
	void rd()
	{
		int a,b,c;
		a=read(),b=read(),c=read();
		r1=min(min(a,b),c);
		r2=min(max(a,b),c);
		r3=max(max(a,b),c);
	}
}a[500005];
bool cmp(QWQ a1,QWQ a2)
{
	if(a1.r2!=a2.r2) return a1.r2<a2.r2;
	if(a1.r3!=a2.r3) return a1.r3<a2.r3;
	return a1.id<a2.id;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		a[i].rd();
		a[i].id=i;
		if(a[i].r1*a[i].r1*a[i].r1/4>maxn)
		{
			maxop=0;
			maxn=a[i].r1*a[i].r1*a[i].r1/4;
			maxi=i;
		}
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<n;i++)
	{
		if(a[i].r2!=a[i+1].r2||a[i].r3!=a[i+1].r3) continue;
		int u=min(a[i].r1+a[i+1].r1,a[i].r2);
		if(u*u*u/4>maxn)
		{
			maxop=1;
			maxn=u*u*u/4;
			maxi=a[i].id;
			maxiex=a[i+1].id;
		}
	}
	if(maxop) cout<<maxop<<endl<<maxi<<' '<<maxiex<<endl<<maxn;
	else cout<<maxop<<endl<<maxi<<endl<<maxn;
    return 0;
}

有点丑见谅

70分求调

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