fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <string.h>
  5. #include <bits/stdc++.h>
  6. #include <cstdlib>
  7. #include <time.h>
  8. #include <fstream>
  9. #include <iterator>
  10. #include <utility>
  11. #include <algorithm>
  12. #include <set>
  13. #include <map>
  14. #include <bitset>
  15.  
  16. using namespace std;
  17.  
  18. #define ll long long
  19. #define ull unsigned ll
  20. #define ld long double
  21. typedef vector<int> vi;
  22. typedef multiset<int> mi;
  23. typedef multiset<ll> mll;
  24. typedef vector<ll> vll;
  25. typedef vector<bool> vb;
  26. typedef vector<string> vs;
  27. typedef vector<vector<int>> _2vi;
  28. typedef vector<vector<ll>> _2vll;
  29. #define all(v) ((v).begin()), ((v).end())
  30. #define sz(v) ((ll)((v).size()))
  31.  
  32. #define vinp(v, n) \
  33.   for (ull i = 0; i < (n); i++) \
  34.   cin >> (v)[i]
  35. #define printv(v) \
  36.   for (auto i : (v)) \
  37.   cout << i << " "
  38. #define fr0(i, n) for (ull(i) = 0; (i) < (n); (i)++)
  39. #define fr1(i, n) for (ull(i) = 1; (i) < (n); (i)++)
  40. #define fr(i, x, n) for (ull(i) = (x); (i) < (n); (i)++)
  41. #define _CRT_SECURE_NO_WARNING
  42. const ll MOD = 1000000007;
  43.  
  44. void Bustany() {
  45. ios_base::sync_with_stdio(false);
  46. cin.tie(NULL);
  47. cout.tie(NULL);
  48. #ifndef ONLINE_JUDGE
  49. freopen("./in.txt", "r", stdin), freopen("./out.txt", "w", stdout);
  50. #endif
  51. }
  52.  
  53. ll n;
  54. ll u, r, d, l;
  55. ll c = 0;
  56. _2vll v;
  57.  
  58. void fun(ll i, ll j, char direction) {
  59. cout << v[i][j] << " ";
  60. c++;
  61. if (c != 0 && c % n == 0) {
  62. cout << endl;
  63. }
  64. if (c == (n * n)) {
  65. return;
  66. }
  67.  
  68.  
  69. if (direction == 'r' && j < r) {
  70. fun(i, j + 1, 'r');
  71. } else if (direction == 'r') {
  72. u++;
  73. fun(i + 1, j, 'd');
  74. }
  75.  
  76.  
  77. if (direction == 'd' && i < d) {
  78. fun(i + 1, j, 'd');
  79. } else if (direction == 'd') {
  80. r--;
  81. fun(i, j - 1, 'l');
  82. }
  83.  
  84.  
  85. if (direction == 'l' && j > l) {
  86. fun(i, j - 1, 'l');
  87. } else if (direction == 'l') {
  88. d--;
  89. fun(i - 1, j, 'u');
  90. }
  91.  
  92.  
  93. if (direction == 'u' && i > u) {
  94. fun(i - 1, j, 'u');
  95. } else if(direction=='u') {
  96. l++;
  97. fun(i, j + 1, 'r');
  98. }
  99. }
  100.  
  101.  
  102. void solve() {
  103. cin >> n;
  104. v.resize(n, vll(n));
  105. u = 0, r = n - 1, d = n - 1, l = 0;
  106. fr0(i, n) {
  107. fr0(j, n) {
  108. cin >> v[i][j];
  109. }
  110. }
  111. fun(0, 0, 'r');
  112. }
  113.  
  114. int main() {
  115. Bustany();
  116. ll t = 1;
  117. // cin >> t;
  118. while (t--) {
  119. solve();
  120. }
  121. }
Success #stdin #stdout 0.01s 5292KB
stdin
5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
stdout
1 2 3 4 5 
6 7 8 9 10 
11 12 13 14 15 
16 17 18 19 20 
21 22 23 24 25