Guest User

Untitled

a guest
Dec 6th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <set>
  4. #include <vector>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. int i,j,k,l,m,n;
  10.  
  11. typedef set<pair<int, int> > SPII;
  12.  
  13. int mult1[6] = {5,3,1,4,2,6};
  14. int mult2[6] = {4,6,3,2,5,1};
  15. int mult3[6] = {1,2,6,3,4,5};
  16. int pow1[4][6], pow2[4][6], pow3[4][6];
  17.  
  18. vector <int> ans[100];
  19.  
  20. int a[100][6];
  21.  
  22. int cur[6];
  23.  
  24. int main(){
  25. for (i=0;i<6;i++){
  26. mult1[i]-;mult2[i]-;mult3[i]--;
  27. }
  28.  
  29. for (i=0;i<6;i++){
  30. pow1[0][i]=i;pow2[0][i]=i;pow3[0][i]=i;
  31. }
  32.  
  33. for (i=1;i<4;i++){
  34. for (j=0;j<6;j++){
  35. pow1[i][j] = mult1[pow1[i-1][j]];
  36. pow2[i][j] = mult2[pow2[i-1][j]];
  37. pow3[i][j] = mult3[pow3[i-1][j]];
  38. }
  39. }
  40.  
  41. scanf("%d",&n);
  42. int k1=1;
  43. ans[0].push_back(1);
  44.  
  45. for (i=0;i<6;i++){
  46. scanf("%d", &cur[i]);
  47. a[0][i]=cur[i]-1;
  48. }
  49.  
  50. for (i=2;i<=n;i++){
  51. for (j=0;j<6;j++){
  52. scanf("%d", &cur[j]);
  53. cur[j]--;
  54. }
  55. int d = 0;
  56. int guess=-1;
  57. for (int test=0;test<k1;test++){
  58. for (int i1=0;i1<4;i1++)
  59. for (int i2=0;i2<4;i2++)
  60. for (int i3=0;i3<4;i3++){
  61. int dd = 1;
  62. for (j=0;j<6;j++)
  63. if(a[test][j]!=cur[pow1[i1][pow2[i2][pow3[i3][j]]]]){
  64. dd=0;
  65. }
  66. if (dd) {d=1;guess = test;}
  67. }
  68. }
  69. if(d){
  70. ans[guess].push_back(i);
  71. } else
  72. {
  73. ans[k1].push_back(i);
  74. for (j=0;j<6;j++)
  75. a[k1][j]=cur[j];
  76. k1++;
  77. }
  78. }
  79. printf("%d\n",k1);
  80. for (i=0;i<k1;i++){
  81. for (j=0;j<ans[i].size();j++){
  82. printf("%d ", ans[i][j]);
  83. }
  84. printf("\n");
  85. }
  86. return 0;
  87. }
Add Comment
Please, Sign In to add comment