Alex_tz307

Ghem infopro X

Nov 14th, 2020 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.57 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("ghem.in");
  6. ofstream fout("ghem.out");
  7.  
  8. int main() {
  9.     fin.sync_with_stdio(false);
  10.     fout.sync_with_stdio(false);
  11.     fin.tie(nullptr);
  12.     fout.tie(nullptr);
  13.     int n, X, Y;
  14.     char D;
  15.     fin >> n >> X >> Y >> D;
  16.     vector < vector < int > > a(n + 1, vector < int >(n + 1));
  17.     for(int i = 1; i <= n; ++i)
  18.         for(int j = 1; j <= n; ++j)
  19.             a[i][j] = (i - 1) * n + j;
  20.     if(X == 1 && Y == 1) {
  21.         if(D == 'O') {
  22.             int x = 1;
  23.             while(x <= n / 2) {
  24.                 for(int j = x; j <= n - x; ++j)
  25.                     fout << a[x][j] << ' ';
  26.                 for(int i = x; i <= n - x; ++i)
  27.                     fout << a[i][n - x + 1] << ' ';
  28.                 for(int j = n - x + 1; j > x; --j)
  29.                     fout << a[n - x + 1][j] << ' ';
  30.                 for(int i = n - x + 1; i > x; --i)
  31.                     fout << a[i][x] << ' ';
  32.                 ++x;
  33.             }
  34.             if(n & 1)
  35.                 fout << a[n / 2 + 1][n / 2 + 1];
  36.         }
  37.         else {
  38.             int x = 1;
  39.             while(x <= n / 2) {
  40.                 for(int j = x; j <= n - x; ++j)
  41.                     fout << a[j][x] << ' ';
  42.                 for(int i = x; i <= n - x; ++i)
  43.                     fout << a[n - x + 1][i] << ' ';
  44.                 for(int j = n - x + 1; j > x; --j)
  45.                     fout << a[j][n - x + 1] << ' ';
  46.                 for(int i = n - x + 1; i > x; --i)
  47.                     fout << a[x][i] << ' ';
  48.                 ++x;
  49.             }
  50.             if(n & 1)
  51.                 fout << a[n / 2 + 1][n / 2 + 1];
  52.         }
  53.     }
  54.     else
  55.         if(X == 1 && Y == n) {
  56.             if(D == 'O') {
  57.                 int x = 1;
  58.                 while(x <= n / 2) {
  59.                     for(int j = n - x + 1; j >= x; --j)
  60.                         fout << a[x][j] << ' ';
  61.                     for(int i = x + 1; i <= n - x + 1; ++i)
  62.                         fout << a[i][x] << ' ';
  63.                     for(int j = x + 1; j <= n - x + 1; ++j)
  64.                         fout << a[n - x + 1][j] << ' ';
  65.                     for(int i = n - x; i > x; --i)
  66.                         fout << a[i][n - x + 1] << ' ';
  67.                     ++x;
  68.                 }
  69.                 if(n & 1)
  70.                     fout << a[n / 2 + 1][n / 2 + 1];
  71.             }
  72.             else {
  73.                 int x = 1;
  74.                 while(x <= n / 2) {
  75.                     for(int j = x; j <= n - x + 1; ++j)
  76.                         fout << a[j][n - x + 1] << ' ';
  77.                     for(int j = n - x; j >= x; --j)
  78.                         fout << a[n - x + 1][j] << ' ';
  79.                     for(int j = n - x; j >= x; --j)
  80.                         fout << a[j][x] << ' ';
  81.                     for(int j = x + 1; j <= n - x; ++j)
  82.                         fout << a[x][j] << ' ';
  83.                     ++x;
  84.                 }
  85.                 if(n & 1)
  86.                     fout << a[n / 2 + 1][n / 2 + 1];
  87.             }
  88.         }
  89.     else
  90.         if(X == n && Y == 1) {
  91.             if(D == 'O') {
  92.                 int x = 1;
  93.                 while(x <= n / 2) {
  94.                     for(int j = x; j <= n - x + 1; ++j)
  95.                         fout << a[n - x + 1][j] << ' ';
  96.                     for(int i = n - x; i >= x; --i)
  97.                         fout << a[i][n - x + 1] << ' ';
  98.                     for(int i = n - x; i >= x; --i)
  99.                         fout << a[x][i] << ' ';
  100.                     for(int j = x + 1; j <= n - x; ++j)
  101.                         fout << a[j][x] << ' ';
  102.                     ++x;
  103.                 }
  104.                 if(n & 1)
  105.                     fout << a[n / 2 + 1][n / 2 + 1];
  106.             }
  107.             else {
  108.                 int x = 1;
  109.                 while(x <= n / 2) {
  110.                     for(int j = n - x + 1; j >= x; --j)
  111.                         fout << a[j][x] << ' ';
  112.                     for(int i = x + 1; i <= n - x + 1; ++i)
  113.                         fout << a[x][i] << ' ';
  114.                     for(int j = x + 1; j <= n - x + 1; ++j)
  115.                         fout << a[j][n - x + 1] << ' ';
  116.                     for(int i = n - x; i > x; --i)
  117.                         fout << a[n - x + 1][i] << ' ';
  118.                     ++x;
  119.                 }
  120.                 if(n & 1)
  121.                     fout << a[n / 2 + 1][n / 2 + 1];
  122.             }
  123.         }
  124.     else {
  125.         if(D == 'O') {
  126.             int x = 1;
  127.             while(x <= n / 2) {
  128.                 for(int j = n - x + 1; j >= x; --j)
  129.                     fout << a[n - x + 1][j] << ' ';
  130.                 for(int i = n - x; i >= x; --i)
  131.                     fout << a[i][x] << ' ';
  132.                 for(int j = x + 1; j <= n - x + 1; ++j)
  133.                     fout << a[x][j] << ' ';
  134.                 for(int i = x + 1; i <= n - x; ++i)
  135.                     fout << a[i][n - x + 1] << ' ';
  136.                 ++x;
  137.             }
  138.             if(n & 1)
  139.                 fout << a[n / 2 + 1][n / 2 + 1];
  140.         }
  141.         else {
  142.             int x = 1;
  143.             while(x <= n / 2) {
  144.                 for(int j = n - x + 1; j >= x; --j)
  145.                     fout << a[j][n - x + 1] << ' ';
  146.                 for(int i = n - x; i >= x; --i)
  147.                     fout << a[x][i] << ' ';
  148.                 for(int j = x + 1; j <= n - x + 1; ++j)
  149.                     fout << a[j][x] << ' ';
  150.                 for(int i = x + 1; i <= n - x; ++i)
  151.                     fout << a[n - x + 1][i] << ' ';
  152.                 ++x;
  153.             }
  154.             if(n & 1)
  155.                 fout << a[n / 2 + 1][n / 2 + 1];
  156.         }
  157.     }
  158. }
  159.  
Add Comment
Please, Sign In to add comment