Advertisement
a53

alpinistii

a53
Mar 11th, 2022
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <fstream>
  2. #include <stack>
  3. #include <algorithm>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7. ifstream cin("alpinistii.in");
  8. ofstream cout("alpinistii.out");
  9. const int NMAX = 205;
  10. int v[NMAX][NMAX], L[NMAX], R[NMAX], f[NMAX], cnt, m;
  11. void flood(int i, int j)
  12. {
  13. if(v[i][j])
  14. return;
  15. v[i][j] = 1;
  16. cnt++;
  17. flood(i+1, j);
  18. flood(i-1, j);
  19. flood(i, j+1);
  20. flood(i, j-1);
  21. }
  22. int maxarea()
  23. {
  24. int j, maxim = 0;
  25. stack <int> st;
  26. st.push(0);
  27. f[0] = -1;
  28. for(j = 1; j <= m; j++)
  29. {
  30. while(f[j] <= f[st.top()])
  31. st.pop();
  32. L[j] = st.top();
  33. st.push(j);
  34. }
  35. while(!st.empty())
  36. st.pop();
  37. st.push(m+1);
  38. f[m+1] = -1;
  39. for(j = m; j >= 1; j--)
  40. {
  41. while(f[j] <= f[st.top()])
  42. st.pop();
  43. R[j] = st.top();
  44. st.push(j);
  45. }
  46. for(j = 1; j <= m; j++)
  47. maxim = max(maxim, f[j] * (R[j] - L[j] - 1));
  48. return maxim;
  49. }
  50. int main()
  51. {
  52. int n, i, j, cer, maxim = 0, ans = 0;
  53. cin >> cer >> n >> m;
  54. for(i = 1; i <= n; i++)
  55. for(j = 1; j <= m; j++)
  56. cin >> v[i][j];
  57. for(i = 0; i <= n+1; i++)
  58. v[i][0] = v[i][m+1] = 1;
  59. for(j = 0; j <= m+1; j++)
  60. v[0][j] = v[n+1][j] = 1;
  61. if(cer == 1)
  62. {
  63. for(i = 1; i <= n; i++)
  64. for(j = 1; j <= m; j++)
  65. {
  66. if(!v[i][j])
  67. {
  68. cnt = 0;
  69. flood(i, j);
  70. maxim = max(maxim, cnt);
  71. }
  72. }
  73. cout << maxim;
  74. return 0;
  75. }
  76. for(i = 1; i <= n; i++)
  77. {
  78. for(j = 1; j <= m; j++)
  79. {
  80. if(!v[i][j])
  81. f[j]++;
  82. else
  83. f[j] = 0;
  84. }
  85. ans = max(ans, maxarea());
  86. }
  87. cout << ans;
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement