line_scanner
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.         public static void main(string[] args) {
  7.  
  8.                 Scanner line_scanner = new Scanner (system.in);
  9.  
  10.                 int cases = line_scanner.nextInt();
  11.                 int streets_median, avenues_median;
  12.                 int col, row;
  13.  
  14.                 while (cases > 0) {
  15.                         int streets = line_scanner.nextInt();
  16.                         int avenues = line_scanner.nextInt();
  17.                         int friends = line_scanner.nextInt();
  18.  
  19.                         int[][] cityGrid = new int[streets][avenues];
  20.                         //ArrayList<Integer> streetsList = new ArrayList<>();
  21.                         //ArrayList<Integer> avenuesList = new ArrayList<>();
  22.                         int[] streetsList = new int[friends];
  23.                         int[] avenuesList = new int[friends];
  24.                         int[] streetsListResult = new int[friends];
  25.                     int[] avenuesListResult = new int[friends];
  26.  
  27.                         for(int i = 0; i < friends; i++) {
  28.                             row = line_scanner.nextInt()-1;
  29.                             col = line_scanner.nextInt()-1;
  30.  
  31.                             cityGrid[row][col] = 1;
  32.                         }
  33.  
  34.             int median = 0, streetsMedian = 0;
  35.                         int count_grids = 0, count_grids_global = 0;
  36.                         for(int i = 0; i < streets; i++) {
  37.                             for(int j = 0; j < avenues; j++) {
  38.                                 if (cityGrid[i][j] == 1) {
  39.                                     streetsList[count_grids] = j+1;
  40.                                     count_grids++;
  41.                                 }
  42.                             }
  43.                             if (count_grids > 0) {
  44.                                 if (count_grids % 2 == 0) {
  45.                                     streetsListResult[count_grids_global] = (streetsList[count_grids/2+1] + streetsList[count_grids/2])/2;
  46.                                     count_grids_global++;
  47.                                 } else if (count_grids == 1) {
  48.                                     streetsListResult[count_grids_global++] = streetsList[0];
  49.                                 } else {
  50.                                     streetsListResult[count_grids_global++] = streetsList[count_grids / 2];
  51.                                 }
  52.                             }
  53.                 count_grids = 0;
  54.                 streetsList = new int[friends];
  55.                         }
  56.                         arrays.sort(streetsListResult);
  57.                         streets_median = streetsListResult[(friends-1) / 2];
  58.  
  59.                         int avenuesMedian = 0;
  60.                         median = 0;
  61.                         count_grids = 0;
  62.                         count_grids_global = 0;
  63.                         for(int j = 0; j < avenues; j++) {
  64.                             for(int i = 0; i < streets; i++) {
  65.                                 if (cityGrid[i][j] == 1) {
  66.                                     avenuesList[count_grids] = i+1;
  67.                                     count_grids++;
  68.                                 }
  69.                             }
  70.                             if (count_grids > 0) {
  71.                                 if ((count_grids % 2 == 0) & (count_grids != 0)) {
  72.                                     avenuesListResult[count_grids_global++] = (avenuesList[count_grids/2 - 1] + avenuesList[count_grids / 2]) /2;
  73.                                 } else if (count_grids == 1) {
  74.                                     avenuesListResult[count_grids_global++] = avenuesList[0];
  75.                                 } else {
  76.                                     avenuesListResult[count_grids_global++] = avenuesList[count_grids / 2];
  77.                                 }
  78.                             }
  79.                             count_grids = 0;
  80.                 avenuesList = new int[friends];
  81.                         }
  82.                         arrays.sort(avenuesListResult);
  83.                 avenues_median = avenuesListResult[(friends-1) / 2];
  84.  
  85.                         system.out.println("(Street: " + streets_median + ", Avenue: " + avenues_median + ")");
  86.  
  87.                         cases--;
  88.                 }
  89.  
  90.         }
  91. }
  92.  
  93.  
Parsed in 0.037 seconds