T2被卡常了,求助卡常
  • 板块学术版
  • 楼主expnoi
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/10/16 12:09
  • 上次更新2023/10/27 07:17:36
查看原帖
T2被卡常了,求助卡常
378346
expnoi楼主2022/10/16 12:09
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
	int s=0,w=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-')
			w=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		s=(s<<3)+(s<<1)+c-'0';
		c=getchar();
	}
	return s*w;
}
inline void print(int x)
{
	if(x<0)
	{
		putchar('-');
		x=-x;
	}
	if(x>=10)
		print(x/10);
	putchar(x%10+'0');
	return;
}
map<pair<int,int>,pair<int,int> >mp,id;
int n,m,a[500010],b[500010],c[500010];
inline int calc(int r1,int r2,int r3)
{
	return min({r1,r2,r3})*min({r1,r2,r3})*min({r1,r2,r3})/4;
}
int main()
{
	n=read();
	for(int i=1;i<=n;++i)
	{
		a[i]=read();
		b[i]=read();
		c[i]=read();
		if(b[i]>c[i])
		swap(b[i],c[i]);
		if(a[i]>b[i])
		swap(a[i],b[i]);
		if(b[i]>c[i])
		swap(b[i],c[i]);
		pair<int,int> P={a[i],b[i]};
		if(c[i]>mp[P].first)
		{
			mp[P].second=mp[P].first;
			id[P].second=id[P].first;
			mp[P].first=c[i];
			id[P].first=i;
		}
		else if(c[i]>mp[P].second)
		{
			mp[P].second=c[i];
			id[P].second=i;
		}
		P={b[i],c[i]};
		if(a[i]>mp[P].first)
		{
			mp[P].second=mp[P].first;
			id[P].second=id[P].first;
			mp[P].first=a[i];
			id[P].first=i;
		}
		else if(a[i]>mp[P].second)
		{
			mp[P].second=a[i];
			id[P].second=i;
		}
		P={a[i],c[i]};
		if(b[i]>mp[P].first)
		{
			mp[P].second=mp[P].first;
			id[P].second=id[P].first;
			mp[P].first=b[i];
			id[P].first=i;
		}
		else if(b[i]>mp[P].second)
		{
			mp[P].second=b[i];
			id[P].second=i;
		}
	}
	int rou=0,who=0,flag=0;
	for(int i=1;i<=n;++i)
	{
		int ro=calc(a[i],b[i],c[i]);
		if(ro>rou)
		{
			flag=0;
			rou=ro;
			who=i;
		}
	}
	//961 963 295
	//963 991 866
	int who1=0,who2=0;
	for(int i=1;i<=n;++i)
	{
		pair<int,int> P={a[i],b[i]};
		int c1=mp[P].first,c2=mp[P].second;
		int ro=calc(a[i],b[i],c1+c2);
		if(ro>rou)
		{
			flag=1;
			rou=ro;
			who1=id[P].first;
			who2=id[P].second;
		}
		P={b[i],c[i]};
		c1=mp[P].first,c2=mp[P].second;
		ro=calc(c[i],b[i],c1+c2);
		if(ro>rou)
		{
			flag=1;
			rou=ro;
			who1=id[P].first;
			who2=id[P].second;
		}
		P={a[i],c[i]};
		c1=mp[P].first,c2=mp[P].second;
		ro=calc(c[i],a[i],c1+c2);
		if(ro>rou)
		{
			flag=1;
			rou=ro;
			who1=id[P].first;
			who2=id[P].second;
		}
	}
	print(flag);
	puts("");
	if(flag==0)
	{
		print(who);
		puts("");
		print(rou);
	}
	if(flag==1)
	{
		if(who1>who2)swap(who1,who2);
		print(who1);
		putchar(' ');
		print(who2);
		puts("");
		print(rou);
	}
}
2022/10/16 12:09
加载中...