mickypinata

USACO-T006: Transformations

Sep 20th, 2021
610
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. ID: mickyta1
  3. TASK: transform
  4. LANG: C++
  5. */
  6.  
  7. #include <bits/stdc++.h>
  8. using namespace std;
  9.  
  10. typedef vector<char> vc;
  11. typedef vector<vc> vvc;
  12.  
  13. int n;
  14.  
  15. vvc rotate90(vvc &a){
  16.     vvc tp(n + 1, vc(n + 1, '\0'));
  17.     for(int i = 1; i <= n; ++i){
  18.         for(int j = 1; j <= n; ++j){
  19.             tp[i][j] = a[n - j + 1][i];
  20.         }
  21.     }
  22.     return tp;
  23. }
  24.  
  25. vvc flipVert(vvc &a){
  26.     vvc tp(n + 1, vc(n + 1, '\0'));
  27.     for(int i = 1; i <= n; ++i){
  28.         for(int j = 1; j <= n; ++j){
  29.             tp[i][j] = a[i][n - j + 1];
  30.         }
  31.     }
  32.     return tp;
  33. }
  34.  
  35. int main(){
  36.  
  37.     freopen("transform.in", "r", stdin);
  38.     freopen("transform.out", "w", stdout);
  39.  
  40.     scanf("%d", &n);
  41.     vvc st(n + 1, vc(n + 1, '\0'));
  42.     vvc tp(n + 1, vc(n + 1, '\0'));
  43.     for(int i = 1; i <= n; ++i){
  44.         for(int j = 1; j <= n; ++j){
  45.             scanf(" %c", &st[i][j]);
  46.             tp[i][j] = st[i][j];
  47.         }
  48.     }
  49.     vvc tr(n + 1, vc(n + 1, '\0'));
  50.     for(int i = 1; i <= n; ++i){
  51.         for(int j = 1; j <= n; ++j){
  52.             scanf(" %c", &tr[i][j]);
  53.         }
  54.     }
  55.     for(int i = 1; i <= 3; ++i){
  56.         tp = rotate90(tp);
  57.         if(tp == tr){
  58.             cout << i << '\n';
  59.             return 0;
  60.         }
  61.     }
  62.     tp = rotate90(tp);
  63.     tp = flipVert(tp);
  64.     if(tp == tr){
  65.         cout << "4\n";
  66.         return 0;
  67.     }
  68.     for(int i = 1; i <= 3; ++i){
  69.         tp = rotate90(tp);
  70.         if(tp == tr){
  71.             cout << "5\n";
  72.             return 0;
  73.         }
  74.     }
  75.     if(st == tr){
  76.         cout << "6\n";
  77.         return 0;
  78.     }
  79.     cout << "7\n";
  80.  
  81.     fclose(stdin);
  82.     fclose(stdout);
  83.  
  84.     return 0;
  85. }
  86.  
RAW Paste Data