fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MAX_SIZE = 50;
  5.  
  6. int main() {
  7. int n, m, mt[MAX_SIZE + 1][MAX_SIZE + 1];
  8. cin >> n >> m;
  9.  
  10. // Citirea matricei
  11. for (int i = 1; i <= n; ++i) {
  12. for (int j = 1; j <= m; ++j) {
  13. cin >> mt[i][j];
  14. }
  15. }
  16.  
  17. // Parcurgerea spiralei
  18. int left = 1, right = m, top =1, bottom = n;
  19. int safePlace = -1; // Inițializăm cu o valoare mică
  20. int flag = 1;
  21. while (left <= right && top <= bottom) {
  22. // Parcurgerea de sus în jos
  23. for (int i = left; i <= right; ++i) {
  24. if (mt[top][i] <= safePlace) {
  25. flag = 0;
  26. }
  27. safePlace = mt[top][i];
  28. }
  29. top++;
  30.  
  31. // Parcurgerea de dreapta la stânga
  32. for (int i = top; i <= bottom; ++i) {
  33. if (mt[i][right] <= safePlace) {
  34. flag = 0;
  35. }
  36. safePlace = mt[i][right];
  37. }
  38. right--;
  39.  
  40. if (top <= bottom) {
  41. // Parcurgerea de jos în sus
  42. for (int i = right; i >= left; --i) {
  43. if (mt[bottom][i] <= safePlace) {
  44. flag = 0;
  45. }
  46. safePlace = mt[bottom][i];
  47. }
  48. bottom--;
  49. }
  50.  
  51. if (left <= right) {
  52. // Parcurgerea de la stânga la dreapta
  53. for (int i = bottom; i >= top; --i) {
  54. if (mt[i][left] <= safePlace) {
  55. flag = 0;
  56. }
  57. safePlace = mt[i][left];
  58. }
  59. left++;
  60. }
  61. }
  62. if (flag == 1) {
  63. cout << "DA";
  64. } else {
  65. cout << "NU";
  66. }
  67.  
  68. return 0;
  69. }
  70.  
Success #stdin #stdout 0.01s 5288KB
stdin
4 4
1 2 3 4
14 16 17 5
13 19 18 7
11 10 9 8
stdout
DA