fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int map[502][502];
  5. int n, m;
  6.  
  7. int one1(int y,int x) {
  8. int sum = 0;
  9. if (y + 3 > n-1) {
  10. return -1;
  11. }
  12. for (int i = 0; i < 4; i++) {
  13. sum += map[y + i][x];
  14. }
  15. return sum;
  16. }
  17.  
  18. int one2(int y, int x) {
  19. int sum = 0;
  20. if (x + 3 > m - 1) {
  21. return -1;
  22. }
  23. for (int i = 0; i < 4; i++) {
  24. sum += map[y][x + i];
  25. }
  26. return sum;
  27. }
  28.  
  29. int two(int y, int x) {
  30. int sum = 0;
  31.  
  32. if (x + 1 > m - 1 || y + 1 > n - 1) {
  33. return -1;
  34. }
  35.  
  36. sum += map[y][x];
  37. sum += map[y + 1][x];
  38. sum += map[y][x + 1];
  39. sum += map[y + 1][x + 1];
  40. return sum;
  41. }
  42.  
  43. int three1(int y, int x) {
  44. int sum = 0;
  45. if (y + 2 > n - 1 || x + 1 > m - 1) {
  46. return -1;
  47. }
  48. sum += map[y][x];
  49. sum += map[y + 1][x];
  50. sum += map[y + 2][x];
  51. sum += map[y + 2][x + 1];
  52.  
  53. return sum;
  54. }
  55.  
  56. int three2(int y, int x) {
  57. int sum = 0;
  58. if (y + 2 > n - 1 || x - 1 < 0) {
  59. return -1;
  60. }
  61. sum += map[y][x];
  62. sum += map[y + 1][x];
  63. sum += map[y + 2][x];
  64. sum += map[y + 2][x - 1];
  65.  
  66. return sum;
  67. }
  68.  
  69. int three3(int y, int x) {
  70. int sum = 0;
  71. if (y + 1 > n - 1 || x + 2 > m - 1) {
  72. return -1;
  73. }
  74. sum += map[y][x];
  75. sum += map[y + 1][x];
  76. sum += map[y + 1][x + 1];
  77. sum += map[y + 1][x + 2];
  78.  
  79. return sum;
  80. }
  81.  
  82. int three4(int y, int x) {
  83. int sum = 0;
  84. if (y + 1 > n - 1 || x - 2 < 0) {
  85. return -1;
  86. }
  87. sum += map[y][x];
  88. sum += map[y + 1][x];
  89. sum += map[y + 1][x - 1];
  90. sum += map[y + 1][x - 2];
  91.  
  92. return sum;
  93. }
  94.  
  95. int three5(int y, int x) {
  96. int sum = 0;
  97. if (y + 1 > n - 1 || x + 2 > m-1) {
  98. return -1;
  99. }
  100. sum += map[y + 1][x];
  101. sum += map[y][x];
  102. sum += map[y][x + 1];
  103. sum += map[y][x + 2];
  104.  
  105. return sum;
  106. }
  107.  
  108. int three6(int y, int x) {
  109. int sum = 0;
  110. if (y + 1 > n - 1 || x + 2 > m - 1) {
  111. return -1;
  112. }
  113. sum += map[y + 1][x + 2];
  114. sum += map[y][x];
  115. sum += map[y][x + 1];
  116. sum += map[y][x + 2];
  117.  
  118. return sum;
  119. }
  120.  
  121. int three7(int y, int x) {
  122. int sum = 0;
  123. if (y + 2 > n - 1 || x + 1 > m - 1) {
  124. return -1;
  125. }
  126. sum += map[y][x];
  127. sum += map[y + 1][x];
  128. sum += map[y + 2][x];
  129. sum += map[y][x + 1];
  130.  
  131. return sum;
  132. }
  133.  
  134. int three8(int y, int x) {
  135. int sum = 0;
  136. if (y + 2 > n - 1 || x + 1 > m - 1) {
  137. return -1;
  138. }
  139. sum += map[y][x];
  140. sum += map[y][x + 1];
  141. sum += map[y + 1][x + 1];
  142. sum += map[y + 2][x + 1];
  143.  
  144. return sum;
  145. }
  146.  
  147. int four1(int y, int x) {
  148. int sum = 0;
  149. if (y + 2 > n - 1 || x + 1 > m - 1) {
  150. return -1;
  151. }
  152. sum += map[y][x];
  153. sum += map[y + 1][x];
  154. sum += map[y + 1][x + 1];
  155. sum += map[y + 2][x + 1];
  156. }
  157.  
  158. int four2(int y, int x) {
  159. int sum = 0;
  160. if (y + 2 > n - 1 || x - 1 < 0) {
  161. return -1;
  162. }
  163. sum += map[y][x];
  164. sum += map[y + 1][x];
  165. sum += map[y + 1][x - 1];
  166. sum += map[y + 2][x - 1];
  167. return sum;
  168. }
  169.  
  170. int four3(int y, int x) {
  171. int sum = 0;
  172. if (y + 1 > n - 1 || x - 1 < 0 || x+1>m-1) {
  173. return -1;
  174. }
  175.  
  176. sum += map[y][x];
  177. sum += map[y][x + 1];
  178. sum += map[y + 1][x];
  179. sum += map[y + 1][x - 1];
  180.  
  181. return sum;
  182. }
  183.  
  184. int four4(int y, int x) {
  185. int sum = 0;
  186. if (y + 1 > n - 1 || x + 2 > m - 1) {
  187. return -1;
  188. }
  189.  
  190. sum += map[y][x];
  191. sum += map[y][x + 1];
  192. sum += map[y + 1][x + 1];
  193. sum += map[y + 1][x + 2];
  194.  
  195. return sum;
  196. }
  197.  
  198. int five1(int y, int x) {
  199. int sum = 0;
  200. if (y + 1 > n - 1 || x + 1 > m - 1 || x - 1 < 0) {
  201. return -1;
  202. }
  203. sum += map[y][x];
  204. sum += map[y + 1][x];
  205. sum += map[y + 1][x - 1];
  206. sum += map[y + 1][x + 1];
  207.  
  208. return sum;
  209. }
  210.  
  211. int five2(int y, int x) {
  212. int sum = 0;
  213.  
  214. if (y + 2 > n - 1 || x - 1 < 0) {
  215. return -1;
  216. }
  217. sum += map[y][x];
  218. sum += map[y + 1][x];
  219. sum += map[y + 2][x];
  220. sum += map[y + 1][x - 1];
  221. return sum;
  222. }
  223.  
  224. int five3(int y, int x) {
  225. int sum = 0;
  226. if (y + 1 > n - 1 || x - 1 < 0 || x + 1 > m - 1) {
  227. return -1;
  228. }
  229. sum += map[y][x];
  230. sum += map[y + 1][x];
  231. sum += map[y][x - 1];
  232. sum += map[y][x + 1];
  233. return sum;
  234. }
  235.  
  236. int five4(int y, int x) {
  237. int sum = 0;
  238.  
  239. if (y + 2 > n - 1 || x + 1 > m - 1) {
  240. return -1;
  241. }
  242. sum += map[y][x];
  243. sum += map[y + 1][x];
  244. sum += map[y + 2][x];
  245. sum += map[y + 1][x + 1];
  246. return sum;
  247. }
  248.  
  249. int main() {
  250. int max = 0;
  251. cin >> n >> m;
  252. for (int i = 0; i < n; i++) {
  253. for (int j = 0; j < m; j++) {
  254. cin >> map[i][j];
  255. }
  256. }
  257. for (int i = 0; i < n; i++) {
  258. for (int j = 0; j < m; j++) {
  259. if (max < one1(i, j)) {
  260. max = one1(i, j);
  261. }
  262. if (max < one2(i, j)) {
  263. max = one2(i, j);
  264. }
  265. if (max < two(i, j)) {
  266. max = two(i, j);
  267. }
  268. if (max < three1(i, j)) {
  269. max = three1(i, j);
  270. }
  271. if (max < three2(i, j)) {
  272. max = three2(i, j);
  273. }
  274. if (max < three3(i, j)) {
  275. max = three3(i, j);
  276. }
  277. if (max < three4(i, j)) {
  278. max = three4(i, j);
  279. }
  280. if (max < three5(i, j)) {
  281. max = three5(i, j);
  282. }
  283. if (max < three6(i, j)) {
  284. max = three6(i, j);
  285. }
  286. if (max < three7(i, j)) {
  287. max = three7(i, j);
  288. }
  289. if (max < three8(i, j)) {
  290. max = three8(i, j);
  291. }
  292. if (max < four1(i, j)) {
  293. max = four1(i, j);
  294. }
  295. if (max < four2(i, j)) {
  296. max = four2(i, j);
  297. }
  298. if (max < four3(i, j)) {
  299. max = four3(i, j);
  300. }
  301. if (max < four4(i, j)) {
  302. max = four4(i, j);
  303. }
  304. if (max < five1(i, j)) {
  305. max = five1(i, j);
  306. }
  307. if (max < five2(i, j)) {
  308. max = five2(i, j);
  309. }
  310. if (max < five3(i, j)) {
  311. max = five3(i, j);
  312. }
  313. if (max < five4(i, j)) {
  314. max = five4(i, j);
  315. }
  316. }
  317. }
  318.  
  319. cout << max << endl;
  320. }
Success #stdin #stdout 0s 4268KB
stdin
5 5
0 0 0 0 0
0 5 5 0 0
0 0 5 0 0
0 0 5 0 0
0 0 0 0 0
stdout
20