fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MAX_SIZE = 50;
  5.  
  6. int main() {
  7. int line, col, mt[MAX_SIZE + 1][MAX_SIZE + 1];
  8. cin >> line >> col;
  9.  
  10. // Citirea matricei
  11. for (int i = 1; i <= line; ++i) {
  12. for (int j = 1; j <= col; ++j) {
  13. cin >> mt[i][j];
  14. }
  15. }
  16.  
  17. bool found = false; // Variabila pentru a verifica daca s-a gasit ceva
  18. for (int i = 1; i <= (line + col - 2) / 2; ++i) {
  19. int safePlace = 0;
  20.  
  21. // Parcurgerea marginii superioare
  22. for (int j = i; j <= col - i + 1; ++j) {
  23. if (safePlace < mt[i][j]) {
  24. safePlace = mt[i][j];
  25. found = true;
  26. cout << mt[i][j] << " ";
  27. }
  28. }
  29.  
  30. // Parcurgerea marginii drepte
  31. for (int j = i + 1; j <= line - i; ++j) {
  32. if (safePlace < mt[j][col - i + 1]) {
  33. safePlace = mt[j][col - i + 1];
  34. found = true;
  35. cout << mt[j][col - i + 1] << " ";
  36. }
  37. }
  38.  
  39. // Parcurgerea marginii inferioare
  40. for (int j = col - i + 1; j >= i; --j) {
  41. if (safePlace < mt[line - i + 1][j]) {
  42. safePlace = mt[line - i + 1][j];
  43. found = true;
  44. cout << mt[line - i + 1][j] << " ";
  45. }
  46. }
  47.  
  48. // Parcurgerea marginii stângi
  49. for (int j = line - i; j > i; --j) {
  50. if (safePlace < mt[j][i]) {
  51. safePlace = mt[j][i];
  52. found = true;
  53. cout << mt[j][i] << " ";
  54. }
  55. }
  56. }
  57.  
  58. // Afișarea rezultatului
  59. if (found) {
  60. cout << "DA";
  61. } else {
  62. cout << "NU";
  63. }
  64.  
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 5296KB
stdin
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
stdout
1 2 3 4 8 12 16 6 7 11 DA