4754990_ac_2938ms_2624k.cpp

来自「部分PKU上的源码」· C++ 代码 · 共 69 行

CPP
69
字号
#include<iostream>
#include<stdlib.h>
using namespace std;
struct snow
{
	int l[6];
} x[100005];
int n;
int bijiao(int x[],int y[])
{
	for(int i=0;i<6;i++)
	{
		if(x[i]<y[i]) return -1;
		else if(x[i]>y[i]) return 1;
	}
	return 0;
}
void change(int now)
{
	int re[6],i,j,k;
	for(i=0;i<6;i++) re[i]=x[now].l[i];
	for(i=0;i<6;i++)
	{
		int temp[6];
		k=i;
		for(j=0;j<6;j++)
		{
			temp[j]=x[now].l[k];
			k++;
			if(k==6) k=0;
		}
		if(bijiao(temp,re)<0) for(k=0;k<6;k++) re[k]=temp[k];
		k=i;
		for(j=0;j<6;j++)
		{
			temp[j]=x[now].l[k];
			k--;
			if(k==-1) k=5;
		}
		if(bijiao(temp,re)<0) for(k=0;k<6;k++) re[k]=temp[k];
	}
	for(k=0;k<6;k++) x[now].l[k]=re[k];
}
int compare(const void *p1,const void *p2)
{
	snow t1=*(snow*)p1;
	snow t2=*(snow*)p2;
	return bijiao(t1.l,t2.l);
}
int main()
{
	cin>>n;
	int i,j;
	for(i=0;i<n;i++) 
	{
		for(j=0;j<6;j++) 
		{
			scanf("%d",x[i].l+j);
		}
		change(i);
	}
	qsort(x,n,sizeof(snow),compare);
	for(i=1;i<n;i++)
	{
		if(bijiao(x[i].l,x[i-1].l)==0){cout<<"Twin snowflakes found.\n";return 0;}
	}
	cout<<"No two snowflakes are alike.\n";
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?