fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. //freopen("input.txt", "r", stdin);
  6. //freopen("output.txt", "w", stdout);
  7.  
  8. int r, c;
  9. cin >> r >> c;
  10. int r_beg = 0, r_end = r - 1, c_beg = 0, c_end = c - 1;
  11.  
  12. int **m = new int*[r];
  13.  
  14. for (int i = 0; i < r; i++)
  15. {
  16. m[i] = new int[c];
  17. for (int j = 0; j < c; j++)
  18. {
  19. cin >> m[i][j];
  20. }
  21. }
  22.  
  23. for (int runs = min(r, c);;)
  24. {
  25. for (int i = c_beg; i <= c_end; i++)
  26. cout << " " << m[r_beg][i];
  27. ++r_beg;
  28. for (int i = r_beg; i <= r_end; i++)
  29. cout << " " << m[i][c_end];
  30. --c_end;
  31. if (!--runs) break;
  32.  
  33. for (int i = c_end; i >= c_beg; i--)
  34. cout << " " << m[r_end][i];
  35. --r_end;
  36. for (int i = r_end; i >= r_beg; i--)
  37. cout << " " << m[i][c_beg];
  38. ++c_beg;
  39. if (!--runs) break;
  40.  
  41. }
  42.  
  43.  
  44. for (int i = 0; i < r; i++)
  45. delete[] m[i];
  46. delete[] m;
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 4376KB
stdin
3 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
stdout
 1 2 3 4 5 6 7 14 21 20 19 18 17 16 15 8 9 10 11 12 13