建议降橙
查看原帖
建议降橙
1275495
cai_cai_cai楼主2024/6/1 11:29

模拟可过(应该是吧)

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
template<typename T>
T min_(T a,T b){
	if(a<b){
		return a;
	}else{
		return b;
	}
}
struct _snow_{
	int _1,_2,_3,_4,_5,_6;
	bool operator<(_snow_ x){
		if(_1!=x._1)return _1<x._1;
		if(_2!=x._2)return _2<x._2;
		if(_3!=x._3)return _3<x._3;
		if(_4!=x._4)return _4<x._4;
		if(_5!=x._5)return _5<x._5;
		if(_6!=x._6)return _6<x._6;
	}
	bool operator==(_snow_ x){
		return _1==x._1&&_2==x._2&&_3==x._3&&_4==x._4&&_5==x._5&&_6==x._6;
	}
	void fun(){
		_snow_ s1={_1,_2,_3,_4,_5,_6};
		_snow_ s2={_6,_1,_2,_3,_4,_5};
		_snow_ s3={_5,_6,_1,_2,_3,_4};
		_snow_ s4={_4,_5,_6,_1,_2,_3};
		_snow_ s5={_3,_4,_5,_6,_1,_2};
		_snow_ s6={_2,_3,_4,_5,_6,_1};
		*this=min_(s1,min_(s2,min_(s3,min_(s4,min_(s5,s6)))));
	}
}a[100005];
signed main(){
	cin>>n;
	srand(time(0));
	for(int i=1;i<=n;i++){
		cin>>a[i]._1>>a[i]._2>>a[i]._3>>a[i]._4>>a[i]._5>>a[i]._6;
		a[i].fun();
		_snow_ x=a[i];
		swap(a[i]._1,a[i]._6);swap(a[i]._2,a[i]._5);swap(a[i]._3,a[i]._4);
		a[i].fun();
		a[i]=min_(a[i],x);
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n-1;i++){
		if(a[i]==a[i+1]){
			cout<<"Twin snowflakes found.";
			return 0;
		}
	}
	cout<<"No two snowflakes are alike.";
	return 0;
}
2024/6/1 11:29
加载中...