Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- /**
- * Created by ChaosFire on 29.12.2017 г.
- */
- public class TelescopicMatrix {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- int size = Integer.parseInt(reader.readLine());
- int[][] matrix = readMatrix(size, reader);
- reader.close();
- System.out.println(isTelescopic(matrix, size));
- }
- private static boolean isTelescopic(int[][] matrix, int size) {
- int value = 1;//layer value
- int layerCount = size / 2;//layer count, center, if it exists, is not included as a layer
- for (int i = 0; i < layerCount; i++) {
- int x = i;
- int y = i;
- while (y < size - 1 - i) {//go right
- if (matrix[x][y] != value) {
- return false;
- }
- y++;
- }
- while (x < size - 1 - i) {//go down
- if (matrix[x][y] != value) {
- return false;
- }
- x++;
- }
- while (y > i) {//go left
- if (matrix[x][y] != value) {
- return false;
- }
- y--;
- }
- while (x > i) {//go up
- if (matrix[x][y] != value) {
- return false;
- }
- x--;
- }
- value++;
- }
- return size % 2 == 0 || matrix[layerCount][layerCount] == value;//check center, if there is such, and return answer
- }
- private static int[][] readMatrix(int size, BufferedReader reader) throws IOException {
- int[][] matrix = new int[size][size];
- for (int i = 0; i < size; i++) {
- String[] row = reader.readLine().split("\\s+");
- for (int j = 0; j < size; j++) {
- matrix[i][j] = Integer.parseInt(row[j]);
- }
- }
- return matrix;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement