Page 2 for your convenience 24 orientations of cube: 1 2 3 4 5 6 1 2 4 5 6 3 1 2 5 6 3 4 1 2 6 3 4 5 2 1 3 6 5 4 2 1 4 3 6 5 2 1 5 4 3 6 2 1 6 5 4 3 3 5 1 6 2 4 3 5 2 4 1 6 3 5 4 1 6 2 3 5 6 2 4 1 4 6 1 3 2 5 4 6 2 5 1 3 4 6 3 2 5 1 4 6 5 1 3 2 5 3 1 4 2 6 5 3 2 6 1 4 5 3 4 2 6 1 5 3 6 1 4 2 6 4 1 5 2 3 6 4 2 3 1 5 6 4 3 1 5 2 6 4 5 2 3 1 test: 4 1 4 2 3 6 5 1 4 3 6 5 2 1 4 5 2 3 6 1 4 6 5 2 3 ans: 1 1 2 3 4 It must be mentioned that two dice are considered equal if the numbers of points on corresponding faces are equal regardless of the orientation of the points on each face. For example, if you superimpose two dice and the numbers of points coincide but two corresponding faces look like this: #.. ..# .#. and .#. ..# #.. then the dice have the same schemes. Edited by author 09.06.2018 22:36 there are 24 unique sequences of edges for the specific cube, i use 12 sequences and flip flop front with back for each of them static int R[][] = new int[][] { {1,2,3, 4,5, 6}, {5,3,1, 4,2, 6}, {2,1,5, 4,3, 6}, {3,5,2, 4,1, 6},
{6,4,3, 1,5, 2}, {5,3,6, 1,4, 2}, {4,6,5, 1,3, 2}, {3,5,4, 1,6, 2}, {1,2,6, 3,4, 5}, {6,4,2, 3,1, 5}, {2,1,4, 3,6, 5}, {4,6,1, 3,2, 5} }; static int front_back_rotate[][] = new int[][]{{0,1,2,3,4,5},{0,1,4,5,2,3}}; //left right top front bottom back //0 1 2 3 4 5 static boolean eqv(int a[], int b[]) { for (int[] r: R) { for (int[] I: front_back_rotate) { int front_back[] = new int[6]; for (int i=0; i<6; i++) { front_back[r[I[i]]-1] = a[i]; } if (Arrays.equals(front_back, b)) return true; } } return false; }
You don't need to try all rotation combinations. Just rotate left and rotate down, use recursion and all combinations will be generated easily. who can give me a test which is similar to test 3? Help me please! What's wrong with my program?? #include <iostream> using namespace std; #define ll unsigned long long ll f(ll* a) { swap(a[4], a[5]); for (int i=1; i<=3; i++) if (a[2*i-1]>a[2*i]) swap(a[2*i-1], a[2*i]); for (int c=1; c<=3; c++) for (int i=1; i<3; i++) if (a[2*i-1]>a[2*i+1]) { swap(a[2*i-1], a[2*i+1]); swap(a[2*i], a[2*i+2]); } return a[6]+10*a[5]+100*a[4]+1000*a[3]+10000*a[2]+100000*a[1]; } ll a[100001][7], sol[800][100010], sum; int main() { ll n, k=0, sum; cin>>n; for (ll i=1; i<=n; i++) { for (int j=1; j<=6; j++) cin>>a[i][j]; sum=f(a[i]); //cout<<"i="<<i<<" "<<sum<<endl; bool f=true; for (ll cnt=1; cnt<=k; cnt++) if (sol[cnt][100009]==sum) { f=false; ll tmp=++sol[cnt][0]; sol[cnt][tmp]=i; break; } if (f) { ++k; sol[k][0]=1; sol[k][1]=i; sol[k][100009]=sum; } } cout<<k<<endl; for (ll i=1; i<=k; i++) { for (ll j=1; j<=sol[i][0]; j++) cout<<sol[i][j]<<" "; cout<<endl; } } #include<iostream> #include<vector> using namespace std; #define forr(i,x,y) for(int i=(int)(x); i<=(int)(y); i++) int p[24][6]={ {1,2,3,4,5,6},{1,2,6,5,3,4},{1,2,4,3,6,5},{1,2,5,6,4,3},{2,1,4,3,5,6},{2,1,6,5,4,3},{2,1,3,4,6,5},{2,1,5,6,3,4}, {3,4,2,1,5,6},{3,4,6,5,2,1},{3,4,1,2,6,5},{3,4,5,6,1,2},{4,3,6,5,1,2},{4,3,2,1,6,5},{4,3,5,6,2,1},{4,3,1,2,5,6}, {5,6,3,4,2,1},{5,6,1,2,3,4},{5,6,4,3,1,2},{5,6,2,1,4,3},{6,5,3,4,1,2},{6,5,2,1,3,4},{6,5,4,3,2,1},{6,5,1,2,4,3}}; int n,a[7],b[7],id[7][7][7][7][7][7],m=0,x=0; vector< vector<int> > y(100100); int main() { scanf("%d",&n); forr(i,1,n) { scanf("%d %d %d %d %d %d",&a[3],&a[4],&a[2],&a[5],&a[1],&a[6]); forr(q,0,23) if(x=id[a[p[q][0]]][a[p[q][1]]][a[p[q][2]]][a[p[q][3]]][a[p[q][4]]][a[p[q][5]]])break; if(!x) { y[++m].push_back(i); id[a[1]][a[2]][a[3]][a[4]][a[5]][a[6]]=m; } else y[x].push_back(i); } printf("%d\n",m); forr(i,1,m) { forr(j,0,y[i].size()-1) printf("%d ",y[i][j]); printf("\n"); } } this C++ code work correctly on my machine and on Timus's: { a[b][c[b]++] = i; b++; } but this code work incorrectly on Timus: { a[b][c[b++]++] = i; } I have spent half-day to find this bug. I think it is not a good habbit to write a program like that. Edited by author 15.07.2009 22:08 How do we check whether two permutations of dice belong to the same scheme or not? Just try all rotations of cube ;) Page 1 u can make use of the fact that there are only 30 different dice possible watever input is given would always equal to one of the 30 unique orientations on rotating( 10 possible rotations )... my soln O(n) got ac in 0.015 sec !!! Edited by author 23.12.2007 23:16 I got AC but used lots of memory. currently I use a very large lookup table such as int hash[7][7][7][7][7][7] for look up a given dice's scheme what's the optimal approach that can minimize the memory usage and also get 0.001s time result? Thanks! Edited by author 18.08.2008 17:51 Yor explanation is bad! It is theory of groop of cube problem and you should simply publicate array [24][6] of this groope without code. Edited by author 18.08.2008 17:53 does anyone know what TEST 3 might contain ? figured out the max number of different dices, and how to compare them ... but WA on test 3 can anyone give me a tricky example ? lol... i had a typo :D i had a < instead of <=, and it gave wrong answer only when max no of different dices were in the input :) I just know that N=50 Thanks for this information. I think that there is 6*4=24 kind of rotating and 6!=720 of all types. So, the Q_max=720/24=6!/4!=30. Am I right? Thanks. Yes, you are! (I think so) Edited by author 07.04.2007 00:06 Edited by author 07.11.2009 11:11 I cann't find bug in my solution which passes all tests from this board. Please, help me! [code deleted] Edited by moderator 23.06.2006 17:16 What's the range of N? 1<=N<=10*5? 1<=N<=10^5? 1<=N<=100000? I supposed 1<=N<=10000... and my program got AC... program ural1015; const ps:array[1..6,0..4] of byte= ((2,3,4,5,6),(1,6,5,4,3),(5,1,6,2,4),(6,1,3,2,5),(3,2,6,1,4),(4,5,2,3,1)); type dicetype=array[1..6] of byte; var dice:array[1..10000] of dicetype; ans:array[1..10000] of byte; n,i,j,k:longint; function compare(a,b:dicetype):boolean; var i,j,k,p:longint; temp:array[1..6] of byte; s1,s2:string[4]; begin compare:=false; for i:=1 to 6 do temp[a[i]]:=ps[a[i],0]; for i:=1 to 6 do if ps[b[i],0]<>temp[b[i]] then exit; for p:=1 to 3 do begin case p of 1:i:=1; 2:i:=3; 3:i:=4; end; s1:=''; s2:=''; for k:=1 to 6 do if b[k]=a[i] then break; for j:=1 to 4 do begin s1:=s1+chr(a[ps[i,j]]+48); s2:=s2+chr(b[ps[k,j]]+48); end; // writeln(s1,' ',s2); j:=pos(s1[1],s2); if j=0 then exit; s2:=copy(s2,j,5-j)+copy(s2,1,j-1); if s1<>s2 then exit; // writeln(s1,' ',s2); end; compare:=true; end; begin // assign(input,'ural1015.in'); // reset(input); readln(n); fillchar(dice,sizeof(dice),0); for i:=1 to n do begin for j:=1 to 6 do read(dice[i,j]); readln; end; fillchar(ans,sizeof(ans),0); k:=0; for i:=1 to n do if ans[i]=0 then begin inc(k); for j:=i+1 to n do if compare(dice[i],dice[j]) then ans[j]:=i; end; writeln(k); for i:=1 to n do if ans[i]=0 then begin write(i); for j:=i+1 to n do if ans[j]=i then write(' ',j); writeln; end; // close(input); end. I'm surprised! At first I submitted my solution with maxN = 100000 and I got MLE. Then I submitted with maxN = 10000 and I got AC. There is no max tests!!! To Fu Hao: Your solution work for time O(N^2). O(N) algotithm is needed in this task! I converted all dice to common view and filled 4-dimension matrix, building linked lists for every type (sum memory spending for lists is O(N)). That's all. WHO CAN TELL ME THE LIMIT IF N? THANKS I got WA at test 3 ,who can give me some test??? Try the test data in previous posts, I get something wrong with this pair: 4 6 1 3 5 2 1 3 6 2 5 4 because I foget to compare the left right after the rotation. when you output your data, this one is collect: 3 1 2 3 4 6 5 but this is not collect: 3 1 2 3 4 6 5 mind the last space in the last of every line. > when you output your data, > this one is collect: > 3 > 1 2 3 > 4 6 > 5 > but this is not collect: > 3 > 1 2 3 > 4 6 > 5 > > mind the last space in the last of every line. No, it's not true! I've simply written to output 3 1_2_3_ 4_5_ 6_ Where sing "_" means space " ". This is not important during writing output. Hello, here is my test data, generated randomly: <input> 1000 2 5 4 6 1 3 2 3 6 5 1 4 4 3 2 6 1 5 2 5 4 6 3 1 6 5 2 3 4 1 4 1 3 2 6 5 5 1 6 4 3 2 3 2 4 6 5 1 6 5 3 4 1 2 3 4 2 6 5 1 5 6 3 4 2 1 2 3 6 4 1 5 2 6 3 5 1 4 4 6 1 3 5 2 4 5 3 6 1 2 2 1 5 6 3 4 1 3 6 4 5 2 3 5 4 2 6 1 3 2 1 5 4 6 3 5 4 1 6 2 1 2 6 4 3 5 1 5 6 3 2 4 3 2 5 6 1 4 4 5 1 2 3 6 6 4 3 1 2 5 5 6 2 3 1 4 5 3 2 1 4 6 6 5 2 4 1 3 5 2 3 4 1 6 3 1 4 6 2 5 5 6 4 1 3 2 1 5 6 4 2 3 5 1 2 3 4 6 6 3 4 5 1 2 6 4 2 1 3 5 4 1 2 3 5 6 1 6 2 4 5 3 3 2 6 4 5 1 3 6 2 5 4 1 4 1 5 2 3 6 2 4 5 6 3 1 6 4 3 2 1 5 4 3 5 6 2 1 4 6 1 3 2 5 3 1 6 4 2 5 1 6 4 3 2 5 2 4 3 5 6 1 5 4 3 6 1 2 3 2 1 4 5 6 5 2 3 1 4 6 4 2 3 5 6 1 3 2 1 5 4 6 1 6 4 3 5 2 4 1 5 6 2 3 3 2 4 1 5 6 2 4 3 6 5 1 4 5 2 3 1 6 2 4 1 3 5 6 5 1 4 2 6 3 1 3 6 5 4 2 5 6 4 1 3 2 4 3 1 5 6 2 5 2 6 4 1 3 3 4 1 6 5 2 5 1 2 3 6 4 6 4 3 5 2 1 5 3 6 4 1 2 2 3 6 5 4 1 1 2 6 3 4 5 3 4 2 6 5 1 6 5 1 3 4 2 2 1 6 3 4 5 4 6 3 2 5 1 2 6 4 1 5 3 6 1 3 2 5 4 6 4 1 3 2 5 5 3 2 1 6 4 1 3 6 2 5 4 4 6 1 2 5 3 6 3 1 5 2 4 4 3 6 5 1 2 4 2 5 6 1 3 2 6 4 3 5 1 2 1 6 3 5 4 1 3 4 6 2 5 2 6 3 4 5 1 1 5 3 4 2 6 5 6 4 3 2 1 6 5 3 4 2 1 5 3 1 2 4 6 6 4 2 3 5 1 2 5 6 4 3 1 3 2 6 4 5 1 1 3 6 4 5 2 6 4 3 2 5 1 6 2 3 4 5 1 5 3 1 4 6 2 2 5 1 4 3 6 3 4 6 2 5 1 4 3 1 2 6 5 4 1 6 3 5 2 1 5 3 6 4 2 2 1 6 5 4 3 5 1 4 3 6 2 3 6 5 2 1 4 2 1 6 4 5 3 5 6 4 2 1 3 3 5 2 1 4 6 1 3 5 2 4 6 6 1 4 2 3 5 2 4 5 6 3 1 1 3 4 2 5 6 3 4 1 2 6 5 2 5 3 4 6 1 3 6 1 2 5 4 4 6 5 3 2 1 2 4 6 5 3 1 5 2 6 3 1 4 4 1 2 5 3 6 4 5 3 6 1 2 2 6 5 4 1 3 1 4 6 2 3 5 1 6 3 4 2 5 1 6 4 5 2 3 2 4 6 1 5 3 4 3 1 2 6 5 2 5 1 3 6 4 4 3 5 1 6 2 4 2 1 5 3 6 2 5 4 6 1 3 2 5 3 1 6 4 2 6 5 1 4 3 2 6 5 3 1 4 4 5 1 2 6 3 3 2 1 4 6 5 5 4 2 1 6 3 5 6 2 1 3 4 5 6 2 4 1 3 2 4 5 6 3 1 3 4 5 1 2 6 1 4 5 2 3 6 6 1 4 2 3 5 2 5 3 6 4 1 3 6 2 4 5 1 5 4 3 1 2 6 1 4 3 2 5 6 1 6 3 4 2 5 1 3 6 4 2 5 4 1 6 5 2 3 5 3 1 6 2 4 2 6 3 1 4 5 2 1 4 3 5 6 5 3 4 2 1 6 3 2 6 1 5 4 4 2 5 1 6 3 2 6 5 1 4 3 3 4 1 5 6 2 2 4 3 5 6 1 5 6 1 3 4 2 3 2 4 1 6 5 5 1 2 6 4 3 6 2 5 1 3 4 1 6 5 2 4 3 3 2 6 5 4 1 2 1 5 6 4 3 4 1 3 2 5 6 3 1 6 5 2 4 1 3 2 6 5 4 2 4 6 5 1 3 5 2 1 6 4 3 1 5 3 4 2 6 5 2 4 6 1 3 3 5 1 2 4 6 3 5 4 1 6 2 3 5 6 4 1 2 3 1 6 5 4 2 6 1 5 2 4 3 3 1 4 6 2 5 4 2 1 5 3 6 4 3 1 2 5 6 5 2 6 4 1 3 4 1 6 3 2 5 6 3 5 2 1 4 5 2 6 3 1 4 1 2 6 5 3 4 3 4 1 6 5 2 1 5 6 4 3 2 5 4 3 1 6 2 4 5 1 2 3 6 6 2 4 5 3 1 1 4 3 6 5 2 2 1 6 4 5 3 2 5 3 6 4 1 2 3 1 5 6 4 2 6 3 4 1 5 5 4 6 3 2 1 4 6 3 5 2 1 1 5 3 2 4 6 3 4 6 5 2 1 4 5 2 1 6 3 2 6 4 3 1 5 5 3 2 1 6 4 6 4 1 3 5 2 5 3 1 6 4 2 1 3 2 4 5 6 2 5 1 6 3 4 3 2 5 1 4 6 3 6 5 2 4 1 2 6 3 4 1 5 5 3 2 6 1 4 2 3 1 6 5 4 6 1 5 4 2 3 1 4 3 5 6 2 5 3 4 2 1 6 5 3 6 2 4 1 5 2 4 3 1 6 1 2 6 4 5 3 1 5 2 3 4 6 6 2 1 5 3 4 6 5 1 2 4 3 4 6 1 2 5 3 6 3 4 5 2 1 4 2 5 6 1 3 4 5 2 1 6 3 2 6 5 4 1 3 4 3 2 5 1 6 2 4 6 5 3 1 3 6 5 2 4 1 5 2 3 4 1 6 2 5 1 3 6 4 5 3 1 2 6 4 4 5 6 1 3 2 5 1 2 3 6 4 1 3 4 6 5 2 1 5 2 6 4 3 3 4 5 1 2 6 3 6 4 1 2 5 4 6 1 5 3 2 5 1 6 4 2 3 2 3 6 4 5 1 5 1 3 6 2 4 5 2 6 1 4 3 5 4 3 6 1 2 2 5 6 3 4 1 2 1 5 6 3 4 3 2 5 1 4 6 4 6 3 5 1 2 3 6 4 1 2 5 4 6 2 3 1 5 4 5 1 6 3 2 5 4 1 3 2 6 6 2 3 4 5 1 5 4 2 1 3 6 2 6 1 4 3 5 1 2 6 4 5 3 1 2 5 3 6 4 1 5 3 6 4 2 1 2 3 4 6 5 5 4 3 2 1 6 4 1 3 6 2 5 3 6 1 4 2 5 3 2 4 5 6 1 2 4 6 1 5 3 1 6 5 2 3 4 4 6 3 1 5 2 5 2 1 4 3 6 3 1 4 6 2 5 2 5 4 6 3 1 2 4 3 5 6 1 6 1 4 5 3 2 3 1 2 4 5 6 1 2 4 3 5 6 2 6 1 4 3 5 1 5 3 2 6 4 6 3 2 5 4 1 1 6 5 4 3 2 1 4 3 2 5 6 2 1 4 3 6 5 1 3 2 4 6 5 2 4 5 3 6 1 3 5 6 4 2 1 3 4 1 5 2 6 3 6 5 4 1 2 4 3 6 5 2 1 5 3 6 1 4 2 5 2 4 6 3 1 5 4 3 2 6 1 3 2 6 1 5 4 2 6 3 5 4 1 1 3 6 2 5 4 2 6 1 3 5 4 4 6 1 2 5 3 6 5 4 1 2 3 6 2 4 1 5 3 1 6 5 3 2 4 1 3 5 4 2 6 2 1 4 5 3 6 4 1 6 3 2 5 5 2 1 3 4 6 4 5 1 3 6 2 5 6 2 4 1 3 2 3 5 1 4 6 5 4 6 3 2 1 5 4 1 6 2 3 6 1 4 5 2 3 2 5 4 6 3 1 2 1 5 4 3 6 5 6 1 2 3 4 4 3 5 6 1 2 4 1 6 2 3 5 5 1 6 4 3 2 5 6 3 2 4 1 1 6 4 3 2 5 5 3 4 1 6 2 3 6 1 5 4 2 3 4 5 2 6 1 6 1 5 3 4 2 3 1 5 4 2 6 3 1 4 2 5 6 5 3 4 1 6 2 6 3 4 5 2 1 6 2 3 4 1 5 1 4 5 6 2 3 4 3 6 5 2 1 2 1 4 5 3 6 3 6 2 1 5 4 2 4 6 3 5 1 2 5 6 1 4 3 6 1 2 3 5 4 4 3 1 6 2 5 3 6 5 4 2 1 4 3 6 1 5 2 6 5 2 4 1 3 6 3 4 2 1 5 4 6 2 3 1 5 1 3 2 5 4 6 2 4 3 1 5 6 6 1 5 2 3 4 4 5 6 2 3 1 1 3 6 4 2 5 3 4 5 2 6 1 2 5 6 1 4 3 4 1 6 5 3 2 4 3 1 5 2 6 3 4 1 2 6 5 4 2 1 6 5 3 4 6 5 2 3 1 4 3 1 5 2 6 3 2 1 5 6 4 4 2 3 1 6 5 2 6 5 3 1 4 1 6 5 4 3 2 5 4 2 6 3 1 2 1 6 5 4 3 1 5 4 2 3 6 3 6 2 5 4 1 4 5 1 3 6 2 2 6 1 5 4 3 5 4 6 3 1 2 2 4 1 3 5 6 6 2 5 3 4 1 5 2 3 4 1 6 2 1 6 3 5 4 1 4 3 6 5 2 3 4 1 2 5 6 5 4 6 1 2 3 1 3 4 6 2 5 2 5 3 1 4 6 3 1 6 4 5 2 2 5 1 4 3 6 5 6 3 1 2 4 3 2 6 1 5 4 2 1 5 4 3 6 5 1 6 4 2 3 4 3 5 1 2 6 5 4 3 1 6 2 1 3 2 5 4 6 5 4 1 3 6 2 3 2 6 5 4 1 3 5 2 6 4 1 1 3 6 4 5 2 6 4 5 3 1 2 4 5 1 2 6 3 1 2 3 4 5 6 4 2 6 5 1 3 2 1 6 4 5 3 2 4 6 3 1 5 3 2 1 6 5 4 3 5 1 6 2 4 2 3 1 4 5 6 2 3 5 1 4 6 6 3 5 4 2 1 6 4 5 2 1 3 6 1 3 5 4 2 1 2 4 3 6 5 4 5 2 3 1 6 2 1 6 4 5 3 1 3 4 2 6 5 1 3 2 6 4 5 4 6 2 3 5 1 4 1 2 3 5 6 2 3 6 1 4 5 6 5 4 2 3 1 5 4 2 3 1 6 1 6 2 5 4 3 1 5 2 4 3 6 1 4 5 2 6 3 5 2 3 6 1 4 3 2 4 5 6 1 5 1 6 4 3 2 2 6 4 5 1 3 2 6 4 3 5 1 6 4 5 2 3 1 6 1 2 3 4 5 3 6 1 2 5 4 4 1 3 2 5 6 3 4 6 2 1 5 2 4 1 3 5 6 6 4 5 2 1 3 1 5 3 2 4 6 4 1 6 2 3 5 4 3 5 6 2 1 1 4 2 3 6 5 6 5 2 4 1 3 2 1 5 4 3 6 4 2 5 1 6 3 5 2 4 3 6 1 3 4 1 2 5 6 5 1 4 3 2 6 3 5 1 4 6 2 6 4 2 1 3 5 3 2 1 5 6 4 5 3 4 2 1 6 3 1 5 6 4 2 5 6 1 2 3 4 4 3 6 2 1 5 1 4 3 2 6 5 4 5 1 3 2 6 4 3 2 5 1 6 1 3 2 6 5 4 5 3 4 6 1 2 2 3 4 6 1 5 4 2 3 1 6 5 4 1 5 2 3 6 4 5 3 1 6 2 4 2 5 1 3 6 3 1 4 5 2 6 3 6 2 1 5 4 5 2 3 1 4 6 5 4 3 1 2 6 1 2 6 3 4 5 2 4 6 5 3 1 3 5 4 1 6 2 3 4 6 5 1 2 3 5 1 6 4 2 6 4 2 3 1 5 1 5 2 3 6 4 3 6 5 4 1 2 2 1 3 5 4 6 4 6 3 5 2 1 5 1 2 4 6 3 5 6 2 1 3 4 1 3 2 5 4 6 5 1 4 6 2 3 3 1 5 2 4 6 2 6 1 4 5 3 5 6 1 3 4 2 5 3 2 4 1 6 4 2 1 6 5 3 1 4 6 5 3 2 6 2 1 4 3 5 3 4 1 2 6 5 5 4 2 6 1 3 2 3 5 6 1 4 3 6 4 1 5 2 5 1 4 3 6 2 5 4 6 1 3 2 1 4 5 3 2 6 4 5 3 6 1 2 3 5 6 1 4 2 3 5 4 6 1 2 2 1 6 5 4 3 2 4 6 5 3 1 6 2 5 4 3 1 2 1 4 5 6 3 5 4 3 1 6 2 5 3 6 2 1 4 1 5 3 6 2 4 3 2 4 1 5 6 4 3 5 2 6 1 1 6 2 5 4 3 5 1 3 6 4 2 5 3 6 2 4 1 5 1 6 3 4 2 6 5 2 1 3 4 3 5 1 6 4 2 5 4 6 2 3 1 5 4 3 1 6 2 1 5 2 6 4 3 2 6 4 1 5 3 2 1 6 5 4 3 6 5 1 2 4 3 1 5 2 3 6 4 2 5 3 4 1 6 2 3 1 5 4 6 3 5 4 6 2 1 4 5 2 3 1 6 3 1 2 6 4 5 6 5 2 3 4 1 5 3 1 2 6 4 4 6 2 5 3 1 5 3 1 2 6 4 4 3 1 2 6 5 2 3 4 5 6 1 5 4 1 6 2 3 4 6 2 1 3 5 1 2 6 3 5 4 3 1 5 4 6 2 3 1 6 5 2 4 1 2 5 3 6 4 5 1 3 2 6 4 1 2 6 4 3 5 3 1 6 4 2 5 4 1 5 2 3 6 4 5 6 3 2 1 5 2 3 1 4 6 2 6 5 3 1 4 1 5 2 6 3 4 6 1 3 4 2 5 6 4 3 1 5 2 4 2 6 1 5 3 5 1 2 3 6 4 1 6 2 3 4 5 5 4 6 3 2 1 2 4 3 6 5 1 6 1 5 3 2 4 2 5 3 6 4 1 4 6 5 2 1 3 6 1 5 3 2 4 3 2 1 6 4 5 3 1 4 5 2 6 1 6 2 5 3 4 5 2 6 1 4 3 6 1 4 5 2 3 5 1 3 2 4 6 1 6 2 4 5 3 4 6 3 2 5 1 5 6 2 4 3 1 2 1 5 6 4 3 5 1 6 2 4 3 4 2 5 6 1 3 6 2 3 1 5 4 6 3 4 1 5 2 3 6 1 2 5 4 2 3 6 5 4 1 3 1 4 5 6 2 2 6 5 3 4 1 2 4 6 1 5 3 6 5 4 1 3 2 3 5 2 4 1 6 1 5 6 2 4 3 3 2 1 5 6 4 4 3 2 1 5 6 6 4 1 2 5 3 5 4 3 6 1 2 4 1 2 3 6 5 5 6 1 2 4 3 3 4 6 1 2 5 4 2 3 6 5 1 5 2 4 6 3 1 3 4 5 6 2 1 6 3 1 4 2 5 6 5 4 1 3 2 4 6 5 3 1 2 6 3 2 5 1 4 1 2 6 3 4 5 5 3 4 1 6 2 6 2 1 3 5 4 1 4 5 2 3 6 5 3 4 2 6 1 3 1 4 6 5 2 4 3 6 5 2 1 2 4 6 3 5 1 4 2 6 1 5 3 2 1 4 5 6 3 4 3 5 2 6 1 4 3 5 2 1 6 5 3 6 2 4 1 5 2 3 6 4 1 4 3 1 2 6 5 4 1 5 2 6 3 2 6 5 3 1 4 6 5 2 3 4 1 4 1 3 2 5 6 6 2 3 1 4 5 1 3 2 5 6 4 2 3 1 5 6 4 1 3 2 4 5 6 6 4 2 5 1 3 4 5 3 2 1 6 5 4 2 1 6 3 2 5 3 4 6 1 1 3 4 5 2 6 1 2 6 5 3 4 1 6 4 3 5 2 2 1 3 6 5 4 4 5 3 1 2 6 3 4 5 1 2 6 5 4 2 6 3 1 1 6 2 3 4 5 5 2 3 4 1 6 2 4 1 5 6 3 2 4 1 3 5 6 4 6 2 3 1 5 5 6 1 4 2 3 1 2 6 5 3 4 4 6 2 3 5 1 1 6 3 4 5 2 3 2 4 6 5 1 4 1 6 3 5 2 3 6 5 4 1 2 6 4 2 3 1 5 6 3 2 4 1 5 6 1 5 4 2 3 2 6 4 1 5 3 1 4 2 3 5 6 4 1 6 2 5 3 1 4 2 3 6 5 3 2 5 6 1 4 4 3 5 1 2 6 3 4 5 1 2 6 3 5 2 4 6 1 6 5 1 3 4 2 3 5 1 6 4 2 3 1 5 4 6 2 1 4 3 5 2 6 2 4 1 5 3 6 5 3 4 2 1 6 2 3 5 6 4 1 6 2 1 4 3 5 2 4 3 6 1 5 3 6 1 4 5 2 3 4 5 2 1 6 5 4 6 1 2 3 2 6 4 3 5 1 5 3 2 6 1 4 2 1 6 3 4 5 4 3 5 6 1 2 4 2 6 3 1 5 1 3 6 4 5 2 6 3 1 4 5 2 4 1 6 5 2 3 4 6 5 1 2 3 5 2 1 6 4 3 1 6 3 4 2 5 6 3 2 1 5 4 5 3 2 6 1 4 1 5 4 2 3 6 6 1 4 2 3 5 4 6 2 3 5 1 5 2 4 3 6 1 2 4 5 3 1 6 4 5 1 6 3 2 6 4 1 3 2 5 6 1 5 2 3 4 5 4 1 6 2 3 1 4 6 5 2 3 2 3 1 4 6 5 1 5 4 6 3 2 4 1 6 3 5 2 3 5 6 2 1 4 5 2 1 6 3 4 1 3 2 5 4 6 6 2 1 5 3 4 1 6 5 3 4 2 6 2 4 3 5 1 6 4 1 3 2 5 3 4 2 6 5 1 6 4 3 1 5 2 5 1 3 2 6 4 5 3 1 6 2 4 6 4 5 2 3 1 1 3 5 6 4 2 1 3 5 4 6 2 1 5 4 2 6 3 6 1 4 5 2 3 2 6 1 5 4 3 3 4 6 5 1 2 6 3 2 4 5 1 4 5 2 6 1 3 5 3 1 6 2 4 6 4 3 2 5 1 6 1 4 3 2 5 5 1 4 2 3 6 5 3 6 4 1 2 3 6 2 4 1 5 2 4 5 3 6 1 2 5 4 3 6 1 1 6 3 2 5 4 2 1 3 6 5 4 5 4 6 3 2 1 3 5 4 6 2 1 1 2 6 3 5 4 2 5 1 4 6 3 2 6 5 3 4 1 2 6 3 1 5 4 4 1 2 5 3 6 4 1 2 3 5 6 1 2 3 5 6 4 5 6 3 2 1 4 4 6 2 5 3 1 6 1 3 4 2 5 5 2 6 1 4 3 6 4 5 1 3 2 4 2 5 1 3 6 6 5 4 1 3 2 1 4 2 5 3 6 1 3 6 4 5 2 4 2 5 6 1 3 1 2 5 3 6 4 2 1 5 6 3 4 4 6 1 2 3 5 2 5 4 1 6 3 6 5 2 1 3 4 3 4 6 1 5 2 5 4 2 3 6 1 6 4 5 1 2 3 4 5 2 6 1 3 4 6 5 2 3 1 1 3 2 6 4 5 4 2 6 1 5 3 1 2 3 4 6 5 6 2 5 3 1 4 3 1 5 6 4 2 3 4 5 6 1 2 2 1 5 3 4 6 5 2 1 6 4 3 3 4 2 5 1 6 5 6 1 3 4 2 4 2 6 1 3 5 3 5 1 4 6 2 4 5 6 3 1 2 3 4 6 5 1 2 2 3 6 4 5 1 2 3 6 1 5 4 2 6 1 5 3 4 2 3 4 5 1 6 1 6 2 3 5 4 5 1 2 3 6 4 2 3 6 1 5 4 2 3 6 1 4 5 3 6 1 5 2 4 2 3 5 4 6 1 4 3 1 5 2 6 4 5 6 3 1 2 2 4 6 5 1 3 5 6 1 2 4 3 1 3 5 2 6 4 5 4 3 6 1 2 2 6 4 5 1 3 4 5 6 3 1 2 1 4 5 3 2 6 1 2 3 4 6 5 4 1 6 2 3 5 1 3 2 4 6 5 1 4 3 5 2 6 2 6 5 1 3 4 5 1 4 2 6 3 2 3 1 4 6 5 3 5 6 2 4 1 2 4 6 5 1 3 6 3 5 4 2 1 4 1 6 5 3 2 6 1 2 4 3 5 6 1 2 3 4 5 5 2 6 4 3 1 6 3 1 2 4 5 1 3 2 5 4 6 6 1 2 5 3 4 3 4 2 5 1 6 4 3 6 5 1 2 3 5 2 1 4 6 3 5 2 6 4 1 6 4 3 2 1 5 6 4 1 5 3 2 4 3 2 6 1 5 2 1 3 5 4 6 3 1 4 6 5 2 4 1 5 6 2 3 6 5 4 2 3 1 3 5 1 4 6 2 2 5 6 4 1 3 2 3 5 4 1 6 5 1 2 3 4 6 4 1 6 2 5 3 6 5 1 4 3 2 3 6 2 4 1 5 5 1 4 3 6 2 2 5 6 1 4 3 5 1 4 2 3 6 5 1 4 3 2 6 5 2 3 6 4 1 1 3 2 4 6 5 2 3 4 6 5 1 1 5 6 3 4 2 1 4 5 6 3 2 5 2 3 1 4 6 1 4 3 6 2 5 5 3 1 2 4 6 3 4 6 2 1 5 6 5 3 1 4 2 2 6 5 1 3 4 3 6 5 4 1 2 5 1 3 6 2 4 3 1 4 5 6 2 4 1 5 3 2 6 5 6 3 4 2 1 2 3 5 1 6 4 1 5 2 4 6 3 3 4 6 2 5 1 2 1 6 4 5 3 2 6 5 4 3 1 6 4 5 1 3 2 1 6 3 5 2 4 4 1 3 5 6 2 2 6 1 5 3 4 5 1 2 4 6 3 1 3 4 5 2 6 3 2 5 4 6 1 5 4 1 6 3 2 3 2 5 4 1 6 6 2 4 3 1 5 2 4 1 5 6 3 3 1 4 5 2 6 5 4 3 1 2 6 2 3 4 6 1 5 5 4 6 1 3 2 1 4 6 3 2 5 6 5 4 1 2 3 2 1 4 3 6 5 5 2 1 6 4 3 3 2 4 1 6 5 5 1 2 6 4 3 6 5 1 4 3 2 1 4 3 6 2 5 4 2 3 6 1 5 4 3 5 2 6 1 1 6 5 2 4 3 1 3 4 5 2 6 2 1 4 5 3 6 5 1 6 4 3 2 2 6 4 5 1 3 3 5 6 2 4 1 1 3 4 5 2 6 6 4 5 2 3 1 2 5 3 4 6 1 2 1 3 6 4 5 5 6 4 2 3 1 1 6 3 2 4 5 6 5 2 1 4 3 6 2 4 3 1 5 2 3 6 5 1 4 2 4 6 3 5 1 1 3 2 5 6 4 5 6 2 3 4 1 2 4 6 5 3 1 6 1 2 3 5 4 6 3 1 4 5 2 2 3 1 6 4 5 3 6 5 1 2 4 5 3 2 4 6 1 4 1 6 2 3 5 4 2 1 6 3 5 1 6 4 3 5 2 5 1 4 2 6 3 6 4 5 1 2 3 6 1 3 5 4 2 2 5 6 4 1 3 2 6 5 4 3 1 6 4 1 2 5 3 2 5 6 4 1 3 4 6 1 3 5 2 6 3 1 4 5 2 5 6 3 2 4 1 5 1 4 6 2 3 6 4 3 5 2 1 5 1 3 2 6 4 2 4 6 1 5 3 4 2 5 6 1 3 1 2 6 5 4 3 3 6 1 4 2 5 1 3 5 6 2 4 2 5 4 1 6 3 5 4 1 3 2 6 4 2 5 6 3 1 4 1 2 3 6 5 5 6 4 2 3 1 3 5 4 6 2 1 1 3 4 2 5 6 5 3 2 6 1 4 3 6 1 2 5 4 2 4 6 1 3 5 1 5 6 3 4 2 3 5 2 6 1 4 5 1 4 3 6 2 3 4 6 2 5 1 2 4 5 6 1 3 1 2 6 3 5 4 1 6 4 3 2 5 1 6 4 5 2 3 5 4 6 2 3 1 4 3 1 2 6 5 4 3 1 6 5 2 4 1 5 2 6 3 1 3 6 5 2 4 6 3 2 4 5 1 1 2 3 6 4 5 3 1 5 6 2 4 1 2 5 3 6 4 4 5 3 1 6 2 5 1 4 3 2 6 1 4 2 3 5 6 5 6 1 3 2 4 3 4 2 5 6 1 1 6 3 4 2 5 5 6 3 2 1 4 5 6 2 4 3 1 3 1 4 5 2 6 5 6 1 3 2 4 1 6 3 4 5 2 6 5 4 3 2 1 1 6 5 4 3 2 3 5 6 2 4 1 4 6 5 1 2 3 5 6 4 1 2 3 6 3 4 1 2 5 3 1 4 2 6 5 3 1 6 4 2 5 3 2 1 5 4 6 4 3 2 1 5 6 2 4 3 1 5 6 1 5 6 2 3 4 1 6 3 4 2 5 2 6 3 4 5 1 2 1 4 5 6 3 5 2 3 1 6 4 4 3 5 6 2 1 5 2 4 1 6 3 4 3 5 6 1 2 3 6 5 2 1 4 4 6 2 3 1 5 4 2 5 3 1 6 5 6 1 2 3 4 2 4 5 3 6 1 5 6 1 2 3 4 2 5 1 3 4 6 5 6 2 3 4 1 5 3 2 1 6 4 2 3 6 4 1 5 6 2 1 3 5 4 6 2 3 1 5 4 2 6 1 5 3 4 3 2 5 1 4 6 1 3 6 4 2 5 4 1 2 5 3 6 1 6 3 4 2 5 5 4 3 6 1 2 4 2 5 1 3 6 1 3 4 6 2 5 1 4 2 5 6 3 2 4 6 5 1 3 1 2 3 6 4 5 1 5 3 4 2 6 1 2 5 4 3 6 5 4 6 2 1 3 2 6 5 4 1 3 5 3 6 2 4 1 5 6 1 4 3 2 1 6 3 2 4 5 5 4 6 3 2 1 5 6 2 4 1 3 2 6 5 4 1 3 5 6 1 4 3 2 5 3 4 2 1 6 4 2 5 1 3 6 3 6 1 5 4 2 4 1 6 5 3 2 5 1 3 4 6 2 4 6 5 3 2 1 3 5 1 2 6 4 2 3 6 1 4 5 5 1 6 3 4 2 2 3 6 4 5 1 3 1 5 6 4 2 6 1 5 2 3 4 5 6 4 2 1 3 2 6 4 5 3 1 1 2 6 4 3 5 5 1 4 6 2 3 5 4 6 1 2 3 </input> and the correct (Accepted) answer: <output> 30 1 34 36 54 114 130 170 216 310 315 326 331 401 421 437 448 470 478 602 654 689 708 737 762 764 776 777 789 825 841 856 872 916 946 956 986 2 55 123 145 147 177 300 302 349 353 357 359 391 432 450 489 542 562 609 655 668 675 769 774 804 835 862 925 943 966 3 31 61 99 106 138 192 297 301 312 325 332 344 348 386 397 403 490 517 586 703 738 754 780 786 790 811 820 821 847 850 857 884 906 908 923 929 981 4 10 43 62 63 70 113 140 181 236 268 270 306 345 368 422 436 454 472 536 539 563 589 608 631 678 688 704 743 748 802 940 947 5 9 17 30 88 94 125 155 178 263 267 280 293 381 399 426 509 518 558 593 603 635 637 641 650 697 710 718 730 758 828 839 849 854 873 888 926 954 978 983 6 92 122 131 144 172 213 299 323 334 343 392 626 656 772 773 816 870 922 987 7 39 51 82 115 117 161 183 218 222 223 227 237 248 283 311 321 356 410 415 429 452 458 483 521 551 554 621 651 662 680 719 740 801 813 843 851 866 868 883 887 889 901 921 942 8 12 53 134 135 163 194 207 246 253 317 378 383 529 597 605 607 619 639 712 742 755 761 779 824 848 874 959 963 975 11 38 93 107 119 137 159 220 260 407 442 462 467 502 505 540 627 636 707 739 745 750 753 766 795 817 836 965 996 13 48 83 112 132 148 156 167 200 219 224 243 250 254 273 294 322 340 361 366 412 465 519 525 565 581 596 600 644 645 663 674 683 726 759 788 864 899 964 967 1000 14 25 87 104 160 164 171 197 241 379 382 388 390 402 460 474 476 514 516 528 538 550 564 685 751 798 805 814 831 842 880 882 903 905 973 991 15 24 45 74 109 120 136 189 195 196 209 234 259 279 303 319 434 471 479 500 523 534 557 601 625 640 676 701 705 734 746 765 803 826 830 915 938 962 980 994 16 18 72 76 95 150 215 245 249 265 314 320 335 347 395 468 480 485 493 577 585 588 599 614 647 664 677 681 691 692 714 721 729 823 890 904 945 951 974 977 19 52 71 89 101 154 240 288 371 372 495 548 567 591 620 633 670 717 724 744 747 757 808 818 829 845 869 914 927 939 993 20 44 69 73 103 174 210 278 285 307 354 373 384 389 413 425 451 453 456 482 501 530 547 560 576 580 606 622 646 657 679 682 700 770 840 853 855 900 933 21 57 80 251 261 272 287 339 396 445 473 477 507 522 553 623 709 736 837 891 894 920 998 22 64 65 121 180 186 190 198 199 225 233 239 289 291 309 374 420 492 532 595 643 648 669 694 733 749 800 819 949 976 982 23 35 49 59 66 68 79 203 211 221 262 292 393 406 409 419 431 488 494 511 555 561 574 629 711 768 793 875 886 992 26 28 84 128 217 226 255 256 282 316 330 333 341 363 424 439 459 520 559 573 615 716 720 725 787 858 897 917 919 972 27 41 75 97 111 124 139 175 264 337 380 385 387 446 487 533 569 610 612 618 693 715 783 833 910 930 941 968 985 990 29 60 91 98 116 168 229 238 271 296 328 342 362 370 398 440 556 611 672 698 727 799 815 876 918 948 989 32 102 133 151 257 284 324 351 355 365 428 457 461 466 503 527 545 568 578 582 587 592 658 735 827 913 924 960 997 33 47 58 105 158 187 235 269 274 275 346 350 360 418 443 464 469 499 613 642 794 885 902 907 936 950 952 988 999 37 50 81 100 110 118 126 127 142 143 157 184 193 212 230 286 295 329 375 394 417 449 513 526 537 546 570 571 590 624 630 659 781 792 807 810 859 867 877 878 881 912 979 40 86 90 146 149 277 281 411 441 444 455 484 496 524 552 566 634 652 760 767 806 809 812 832 838 852 861 871 896 944 961 970 42 176 205 206 242 244 247 266 318 400 408 427 504 543 598 617 653 660 661 713 722 723 784 785 892 893 934 937 46 56 67 108 169 231 276 305 313 338 352 405 414 430 491 506 510 512 535 544 649 665 671 686 695 699 702 741 756 771 775 782 791 895 898 909 932 971 995 77 96 141 153 162 166 173 182 191 201 202 204 214 252 298 358 364 416 423 433 481 579 594 628 632 638 667 687 706 822 879 958 984 78 85 129 179 290 308 327 336 367 369 377 435 447 463 508 531 541 583 584 673 684 731 778 796 834 844 846 860 863 865 928 931 935 953 955 957 969 152 165 185 188 208 228 232 258 304 376 404 438 475 486 497 498 515 549 572 575 604 616 666 690 696 728 732 752 763 797 911 </output> Good luck, Alex PS: !!! please note, that there may be some newlines, mis-inserted by my browser !!! Thanks to this data,I got AC at last. Thank you! Thanks to many tests.I am glad.I was worked solution by you test.I got AC already. tryhard Edited by author 30.12.2014 16:44 CONST MaxN = 1000; TYPE TDice = ARRAY[1..6] OF Byte; VAR N, I, J, M : LongInt; Kind : ARRAY[1..MaxN] OF Integer; Kinds : LongInt; C : TDice; Dices : ARRAY[1..MaxN] OF TDice; PROCEDURE RotateLeft(VAR T : TDice); VAR Temp : Byte; BEGIN Temp := T[4]; T[4] := T[2]; T[2] := T[6]; T[6] := T[1]; T[1] := Temp; END; PROCEDURE RotateUp(VAR T : TDice); VAR Temp : Byte; BEGIN Temp := T[4]; T[4] := T[5]; T[5] := T[6]; T[6] := T[3]; T[3] := Temp; END; PROCEDURE RotateBack(VAR T : TDice); VAR Temp : Byte; BEGIN Temp := T[5]; T[5] := T[1]; T[1] := T[3]; T[3] := T[2]; T[2] := Temp; END; PROCEDURE Change(VAR T : TDice; A, B, C : Integer); VAR I : LongInt; BEGIN FOR I := 1 TO A DO RotateLeft(T); FOR I := 1 TO B DO RotateUp(T); FOR I := 1 TO C DO RotateBack(T); END; FUNCTION Find(T : TDice; Index : LongInt) : LongInt; VAR I, J : LongInt; Ok : Boolean; BEGIN FOR I := 1 TO Index-1 DO BEGIN Ok := True; FOR J := 1 TO 6 DO IF T[J] <> Dices[I][J] THEN Ok := False; IF (Ok) THEN BEGIN Find := Kind[I]; Exit; END; END; Find := 0; END; PROCEDURE Solve(T : TDice; Index : LongInt); VAR I, J, K, Lab : LongInt; Tmp : TDice; BEGIN FOR J := 0 TO 3 DO FOR I := 0 TO 3 DO FOR K := 0 TO 3 DO BEGIN Tmp := T; Change(Tmp, I, J, K); Lab := Find(Tmp, Index); IF Lab <> 0 THEN BEGIN Kind[Index] := Lab; Exit; END; END; Inc(Kinds); Kind[Index] := Kinds; END; BEGIN Kinds := 0; ReadLn(N); FOR I := 1 TO N DO BEGIN FOR J := 1 TO 6 DO Read(C[J]); ReadLn; Dices[I] := C; Solve(C, I); END; WriteLn(Kinds); FOR I := 1 TO Kinds DO BEGIN J := 1; WHILE Kind[J] <> I DO Inc(J); Write(J); FOR M := J+1 TO N DO IF Kind[M] = I THEN Write(' ', M); IF I <> Kinds THEN WriteLn; END; END. wrong answer.... :))))))))))) Please post it up here or email me privately drajmsadeq@yahoo.com Great joke :) wrong answer.... :))))))))))) |
|