| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:排序3600ms卡过In Reply To:Re:排序3600ms卡过 Posted by:fengjian at 2010-08-10 20:27:33 #include <iostream>
#include <algorithm>
using namespace std;
struct stu
{
int a[10];
}s[100002];
bool cmp(stu a1,stu b1)
{
return a1.a[6]<=b1.a[6];
}
int main()
{
int i,j,n,k,t,l,sum,ll,kk;
scanf("%d",&n);
for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<6;j++)
{
scanf("%d",&s[i].a[j]);
sum+=s[i].a[j];
}
s[i].a[6]=sum;
}
sort(s,s+n,cmp);
ll=0;
kk=1;
for(i=0;i<n-1;i++)
{
l=1;
if(kk<=i) kk=i+1;
for(j=kk;j<n;j++)
{
if(s[i].a[6]==s[j].a[6])
{
if(l==1) {kk=j;l=0;}
for(t=0;t<6;t++)
{
for(k=0;k<6;k++)
if(s[i].a[(k+t)%6]!=s[j].a[k]) break;
if(k>=6) {ll=1;goto aa;}
}
for(t=0;t<6;t++)
{
for(k=0;k<6;k++)
if(s[i].a[(k+t)%6]!=s[j].a[5-k]) break;
if(k>=6) {ll=1;goto aa;}
}
}
else if(s[i].a[6]<s[j].a[6]) break;
}
}
aa:; if(ll==1) cout<<"Twin snowflakes found."<<endl;
else cout<<"No two snowflakes are alike."<<endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator