30分 5WA 2TLE 求助
查看原帖
30分 5WA 2TLE 求助
383162
fwhzqr楼主2022/10/16 13:43
#include<bits/stdc++.h>
using namespace std;
int read() {
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') {
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9') {
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}
inline void write(int w) {
	if(w<0) {
		putchar('-');
		w=-w;
	}
	if(w>9) write(w/10);
	putchar(w%10+'0');
}
struct node {
	int x,y,z;
} a[1000005];
typedef pair<int,int> pii;
map<pii,pii>mp;
int b[3];
int xa[105],xb[105],xc[105];
int main () {
//	freopen("elf.in","r",stdin);
//	freopen("elf.out","w",stdout);
	int n;
	n=read();
	for(int i=1; i<=n; i++) {
		pii tmp;
		b[0]=read();
		b[1]=read();
		b[2]=read();
		sort(b,b+3);
		a[i].x=b[0];
		a[i].y=b[1];
		a[i].z=b[2];
		tmp.first=b[0];
		tmp.second=b[1];
		mp[tmp]=make_pair(max(mp[tmp].first,b[0]),i);
		tmp.first=b[0];
		tmp.second=b[2];
		//mp[tmp]=1;
		mp[tmp]=make_pair(max(mp[tmp].first,b[0]),i);
		tmp.first=b[1];
		tmp.second=b[2];
		//mp[tmp]=1;
		mp[tmp]=make_pair(max(mp[tmp].first,b[0]),i);
		tmp.first=b[1];
		tmp.second=b[0];
		//mp[tmp]=1;
		mp[tmp]=make_pair(max(mp[tmp].first,b[0]),i);
		tmp.first=b[2];
		tmp.second=b[1];
		//mp[tmp]=1;
		mp[tmp]=make_pair(max(mp[tmp].first,b[0]),i);
		tmp.first=b[2];
		tmp.second=b[0];
		//mp[tmp]=1;
		mp[tmp]=make_pair(max(mp[tmp].first,b[0]),i);
	}
	int opt=0;
	int idi,idj;
	int ans=0;
	for(int i=1; i<=n; i++) {
		xa[1]=a[i].x,xb[1]=a[i].y,xc[1]=a[i].z;
		xa[2]=a[i].x,xb[2]=a[i].z,xc[2]=a[i].y;
		xa[3]=a[i].y,xb[3]=a[i].z,xc[3]=a[i].x;
		xa[4]=a[i].y,xb[4]=a[i].x,xc[4]=a[i].z;
		xa[5]=a[i].z,xb[5]=a[i].x,xc[5]=a[i].y;
		xa[6]=a[i].z,xb[6]=a[i].y,xc[6]=a[i].x;
		int qq=min(a[i].y,a[i].x);
		int qq1=min(a[i].z,qq);
		int qq2=qq1*qq1*qq1/4;
		if(qq2>ans) {
			opt=0;
			idi=i;
			ans=qq2;
		}
		pii tmp;
		tmp.first=xa[1];
		tmp.second=xb[1];
		tmp.first=xa[1];
		tmp.second=xb[1];
		if(mp[tmp].first>0&&mp[tmp].second!=i) {
			int q=mp[tmp].first+min(min(a[i].x,a[i].y),a[i].z);
			int q0=min(min(a[i].x,a[i].y),a[i].z);
			int q01,q02;
			if(q0==a[i].x){
				q01=a[i].y;
				q02=a[i].z;
			}
			if(q0==a[i].y){
				q01=a[i].x;
				q02=a[i].z;
			}
			if(q0==a[i].z){
				q01=a[i].y;
				q02=a[i].x;
			}
			int q1=min(q01,q02);
			int q2=min(q1,q);
			int q3=q2*q2*q2/4;
			if(q3>ans) {
				opt=1;
				idi=mp[tmp].second;
				idj=i;
				ans=q3;
			}
		}
		tmp.first=xa[2];
		tmp.second=xb[2];
		if(mp[tmp].first>0&&mp[tmp].second!=i) {
			int q=mp[tmp].first+min(min(a[i].x,a[i].y),a[i].z);
			int q1=min(a[i].y,a[i].x);
			int q2=min(q1,q);
			int q3=q2*q2*q2/4;
			if(q3>ans) {
				opt=1;
				idi=mp[tmp].second;
				idj=i;
				ans=q3;
			}
		}
		tmp.first=xa[3];
		tmp.second=xb[3];
		if(mp[tmp].first>0&&mp[tmp].second!=i) {
			int q=mp[tmp].first+min(min(a[i].x,a[i].y),a[i].z);
			int q0=min(min(a[i].x,a[i].y),a[i].z);
			int q01,q02;
			if(q0==a[i].x){
				q01=a[i].y;
				q02=a[i].z;
			}
			if(q0==a[i].y){
				q01=a[i].x;
				q02=a[i].z;
			}
			if(q0==a[i].z){
				q01=a[i].y;
				q02=a[i].x;
			}
			int q1=min(q01,q02);
			int q2=min(q1,q);
			int q3=q2*q2*q2/4;
			if(q3>ans) {
				opt=1;
				idi=mp[tmp].second;
				idj=i;
				ans=q3;
			}
		}
		tmp.first=xa[4];
		tmp.second=xb[4];
		if(mp[tmp].first>0&&mp[tmp].second!=i) {
			int q=mp[tmp].first+min(min(a[i].x,a[i].y),a[i].z);
			int q0=min(min(a[i].x,a[i].y),a[i].z);
			int q01,q02;
			if(q0==a[i].x){
				q01=a[i].y;
				q02=a[i].z;
			}
			if(q0==a[i].y){
				q01=a[i].x;
				q02=a[i].z;
			}
			if(q0==a[i].z){
				q01=a[i].y;
				q02=a[i].x;
			}
			int q1=min(q01,q02);
			int q2=min(q1,q);
			int q3=q2*q2*q2/4;
			if(q3>ans) {
				opt=1;
				idi=mp[tmp].second;
				idj=i;
				ans=q3;
			}
		}
		tmp.first=xa[5];
		tmp.second=xb[5];
		if(mp[tmp].first>0&&mp[tmp].second!=i) {
			int q=mp[tmp].first+min(min(a[i].x,a[i].y),a[i].z);
			int q0=min(min(a[i].x,a[i].y),a[i].z);
			int q01,q02;
			if(q0==a[i].x){
				q01=a[i].y;
				q02=a[i].z;
			}
			if(q0==a[i].y){
				q01=a[i].x;
				q02=a[i].z;
			}
			if(q0==a[i].z){
				q01=a[i].y;
				q02=a[i].x;
			}
			int q1=min(q01,q02);
			int q2=min(q1,q);
			int q3=q2*q2*q2/4;
			if(q3>ans) {
				opt=1;
				idi=mp[tmp].second;
				idj=i;
				ans=q3;
			}
		}
		tmp.first=xa[6];
		tmp.second=xb[6];
		if(mp[tmp].first>0&&mp[tmp].second!=i) {
			int q=mp[tmp].first+min(min(a[i].x,a[i].y),a[i].z);
			int q0=min(min(a[i].x,a[i].y),a[i].z);
			int q01,q02;
			if(q0==a[i].x){
				q01=a[i].y;
				q02=a[i].z;
			}
			if(q0==a[i].y){
				q01=a[i].x;
				q02=a[i].z;
			}
			if(q0==a[i].z){
				q01=a[i].y;
				q02=a[i].x;
			}
			int q1=min(q01,q02);
			int q2=min(q1,q);
			int q3=q2*q2*q2/4;
			if(q3>ans) {
				opt=1;
				idi=mp[tmp].second;
				idj=i;
				ans=q3;
			}
		}
	}
	if(opt==0){
		printf("%d\n%d\n%d\n",opt,idi,ans);
	}
	else{
		printf("%d\n",opt);
		if(idi>idj){
			swap(idi,idj);
		}
		printf("%d %d\n",idi,idj);
		printf("%d\n",ans);
	}
	return 0;
}
2022/10/16 13:43
加载中...