Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <set>
- #include <vector>
- #include <string>
- using namespace std;
- int i,j,k,l,m,n;
- typedef set<pair<int, int> > SPII;
- int mult1[6] = {5,3,1,4,2,6};
- int mult2[6] = {4,6,3,2,5,1};
- int mult3[6] = {1,2,6,3,4,5};
- int pow1[4][6], pow2[4][6], pow3[4][6];
- vector <int> ans[100];
- int a[100][6];
- int cur[6];
- int main(){
- for (i=0;i<6;i++){
- mult1[i]-;mult2[i]-;mult3[i]--;
- }
- for (i=0;i<6;i++){
- pow1[0][i]=i;pow2[0][i]=i;pow3[0][i]=i;
- }
- for (i=1;i<4;i++){
- for (j=0;j<6;j++){
- pow1[i][j] = mult1[pow1[i-1][j]];
- pow2[i][j] = mult2[pow2[i-1][j]];
- pow3[i][j] = mult3[pow3[i-1][j]];
- }
- }
- scanf("%d",&n);
- int k1=1;
- ans[0].push_back(1);
- for (i=0;i<6;i++){
- scanf("%d", &cur[i]);
- a[0][i]=cur[i]-1;
- }
- for (i=2;i<=n;i++){
- for (j=0;j<6;j++){
- scanf("%d", &cur[j]);
- cur[j]--;
- }
- int d = 0;
- int guess=-1;
- for (int test=0;test<k1;test++){
- for (int i1=0;i1<4;i1++)
- for (int i2=0;i2<4;i2++)
- for (int i3=0;i3<4;i3++){
- int dd = 1;
- for (j=0;j<6;j++)
- if(a[test][j]!=cur[pow1[i1][pow2[i2][pow3[i3][j]]]]){
- dd=0;
- }
- if (dd) {d=1;guess = test;}
- }
- }
- if(d){
- ans[guess].push_back(i);
- } else
- {
- ans[k1].push_back(i);
- for (j=0;j<6;j++)
- a[k1][j]=cur[j];
- k1++;
- }
- }
- printf("%d\n",k1);
- for (i=0;i<k1;i++){
- for (j=0;j<ans[i].size();j++){
- printf("%d ", ans[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment