niyaznigmatullin

Untitled

Sep 14th, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.88 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. public class MyFirstProgram {
  5.  
  6.     public static void main(String[] args) {
  7.         Scanner in = new Scanner(System.in);
  8.         PrintWriter out = new PrintWriter(System.out);
  9.         int n = in.nextInt();
  10.         int[][] d = new int[n + 1][n + 1];
  11.         for (int i = 0; i < n; i++)
  12.             for (int j = 0; j < n; j++) {
  13.             d[i][j] = in.nextInt();        
  14.         }
  15.         long res1 = -2, res2 = -456;
  16.         long[] d1 = new long[2 * n];
  17.         long[] d2 = new long[2 * n];
  18.         long[][] tmp = new long[n][n];
  19.         for (int i = 0; i < n; i++) {
  20.             for (int j = 0; j < n; j++) {
  21.                 if (i == 0 || j == 0) {
  22.                     tmp[i][j] = d[i][j];
  23.                 } else {
  24.                     tmp[i][j] += tmp[i - 1][j - 1] + d[i][j];
  25.                 }
  26.             }
  27.         }
  28.         for (int i = 0; i < n; i++) {
  29.             d2[i] = tmp[i][n - 1];
  30.         }
  31.         for (int i = 0; i < n - 1; i++) {
  32.             d2[n + i] = tmp[n - 1][n - i - 2];
  33.         }
  34.         for (int i = 0; i < n; i++) {
  35.             for (int j = 0; j < n; j++) {
  36.                 tmp[i][j] = 0;
  37.             }
  38.         }
  39.         for (int i = 0; i < n; i++) {
  40.             for (int j = 0; j < n; j++) {
  41.                 if (i == 0 || j == n - 1) {
  42.                     tmp[i][j] = d[i][j];
  43.                 } else {
  44.                     tmp[i][j] += tmp[i - 1][j + 1] + d[i][j];
  45.                 }
  46.             }
  47.         }
  48.         for (int i = 0; i < n; i++) {
  49.             d1[i] = tmp[i][0];
  50.         }
  51.         for (int i = 0; i < n - 1; i++) {
  52.             d1[n + i] = tmp[n - 1][i + 1];
  53.         }
  54.         int x1 = -1;
  55.         int x2 = -1;
  56.         int y1 = -1;
  57.         int y2 = -1;
  58.         for (int i = 0; i < n; i++) {
  59.             for (int j = 0; j < n; j++) {
  60.                 if ((i + j) % 2 == 0) {
  61.                     if (d1[i + j] + d2[i + n - j - 1] - d[i][j] > res1) {
  62.                         res1 = d1[i + j] + d2[i + n - j - 1] - d[i][j];
  63.                         x1 = i + 1;
  64.                         y1 = j + 1;
  65.                     }
  66.                 } else {
  67.                     if (d1[i + j] + d2[i + n - j - 1] - d[i][j] > res2) {
  68.                         res2 = d1[i + j] + d2[i + n - j - 1] - d[i][j];
  69.                         x2 = i + 1;
  70.                         y2 = j + 1;
  71.                     }
  72.                 }
  73.             }
  74.         }
  75.         out.println(res1 + res2);
  76.         out.println(x1+" "+y1+" "+x2+" "+y2);
  77.        
  78.         in.close();
  79.         out.close();
  80.     }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment