40pts求助!!!(急)
查看原帖
40pts求助!!!(急)
494699
卷王慢即快楼主2022/10/16 20:48
#include<bits/stdc++.h>
using namespace std;
#define maxn 500001
struct node
{
	int x,y,z;
}a[maxn];
struct edge
{
	int x,y,z,i,j;
	bool opt;
}ans[maxn];
int n,cnt=0;
bool opt=0;
bool vis[maxn];
inline bool cmp(node a,node b)
{
	if(a.x!=b.x) return a.x<b.x;
	else if(a.y!=b.y) return a.y<b.y;
	return a.z<b.z;
}
inline int swz(int r1,int r2,int r3)
{
	return floor(0.25*pow(min(r1,min(r2,r3)),3));
}
int main()
{
	//freopen("3.in","r",stdin);
	//freopen("3.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y>>a[i].z;
	for(int i=1;i<=n;i++)
	{
		bool flag=0;
		for(int j=i+1;j<=n;j++)
		{
			if(a[i].x==a[j].x && a[i].y==a[j].y && !ans[cnt].opt)
			{
				ans[++cnt].x=a[i].x;
				ans[cnt].y=a[i].y;
				ans[cnt].z=a[i].z+a[j].z;
				ans[cnt].i=i; ans[cnt].j=j;
				ans[cnt].opt=1; flag=1;
				break;
			}
			if(a[i].x==a[j].x && a[i].z==a[j].z && !ans[cnt].opt)
			{
				ans[++cnt].x=a[i].x;
				ans[cnt].z=a[i].z;
				ans[cnt].y=a[i].y+a[j].y;
				ans[cnt].i=i; ans[cnt].j=j;
				ans[cnt].opt=1; flag=1;
				break;
			}
			if(a[i].y==a[j].y && a[i].z==a[j].z && !ans[cnt].opt)
			{
				ans[++cnt].y=a[i].y;
				ans[cnt].z=a[i].z;
				ans[cnt].x=a[i].x+a[j].x;
				ans[cnt].i=i; ans[cnt].j=j;
				ans[cnt].opt=1; flag=1;
				break;
			}
		}
		if(flag==0)
		{
			ans[++cnt].x=a[i].x;
			ans[cnt].y=a[i].y;
			ans[cnt].z=a[i].z;
			ans[cnt].i=i,ans[cnt].j=-1;
			ans[cnt].opt=0;
		}
	}int a1=0,a2=0,a3=0,t1=0,t2=0,t3=0;
	for(int i=1;i<=cnt;i++)
	{
		t1=swz(ans[i].x,ans[i].y,ans[i].z);
		if(a3<t1)
		{
			a3=t1;
			t2=i;
		}
	}
	a1=ans[t2].opt;
	if(a1==0) cout<<a1<<endl<<ans[t2].i<<endl<<a3;
	else cout<<a1<<endl<<ans[t2].i<<" "<<ans[t2].j<<endl<<a3;
	return 0;
}

rainbow

2022/10/16 20:48
加载中...