fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define ll long long
  5. #define nl '\n'
  6. #define int long long
  7.  
  8. void file()
  9. {
  10. #ifndef ONLINE_JUDGE
  11. freopen("in.txt", "r", stdin);
  12. freopen("out.txt", "w", stdout);
  13. #endif
  14. }
  15.  
  16. int dx[] = {0, 1, 0, -1};
  17. int dy[] = {1, 0, -1, 0};
  18. int dir = 0;
  19. int n;
  20. vector <vector <int> > v;
  21. vector <vector <bool> > vv;
  22. vector <int> v1;
  23.  
  24.  
  25. void rec(int x, int y)
  26. {
  27. if (x >= n || y >= n || x < 0 || y < 0 || vv[x][y]) return;
  28. vv[x][y] = 1;
  29. //cout << v[x][y]<<" ";
  30. v1.push_back(v[x][y]);
  31. if (x + dx[dir] >= n || y + dy[dir] >= n || x + dx[dir] < 0 || y + dy[dir] < 0 || vv[x + dx[dir]][y + dy[dir]])
  32. {
  33. dir = (dir + 1) % 4;
  34. }
  35.  
  36. rec(x + dx[dir], y + dy[dir]);
  37. }
  38.  
  39. int kad(vector <int> v)
  40. {
  41. int mx = 0, sum = 0;
  42. for (int i: v)
  43. {
  44. sum += i;
  45. mx = max(mx, sum);
  46. sum = max(sum, 0LL);
  47. }
  48. return mx;
  49. }
  50.  
  51. signed main()
  52. {
  53. ios::sync_with_stdio(false);
  54. cin.tie(nullptr);
  55. file();
  56.  
  57. //memset(dp, -1, sizeof(dp));
  58.  
  59. cin >> n;
  60.  
  61. v = vector <vector <int> >(n, vector <int>(n));
  62. vv = vector <vector <bool> >(n, vector <bool>(n, false));
  63. for (int i = 0; i < n; i++)
  64. for (int j = 0; j < n; j++)
  65. cin >> v[i][j];
  66.  
  67. int mx = 0;
  68.  
  69.  
  70. for (int i = 0; i < 2; i++)
  71. {
  72. for (int j = 0; j < 4; j++)
  73. {
  74. int x = 0, y = 0;
  75.  
  76. if (j == 0)
  77. x = 0, y = 0, dir = 0;
  78. else if (j == 1)
  79. x = 0, y = n - 1, dir = 1;
  80. else if (j == 2)
  81. x = n - 1, y = n - 1, dir = 2;
  82. else if (j == 3)
  83. x = n - 1, y = 0, dir = 3;
  84.  
  85. vv = vector <vector <bool> >(n, vector <bool>(n, false));
  86. v1.clear();
  87. rec(x, y);
  88. mx = max(mx, kad(v1));
  89. }
  90. swap(dx, dy);
  91. }
  92.  
  93. cout << mx;
  94.  
  95.  
  96. return 0;
  97. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty