Тема: Алготестер задача №0926.Кухня та котик.Районна олімпіада 2018 задача F
Є розбір цієї задачі і навіть приклад реалізації, але він на С++ і я його не розумію.https://algotester.com/uk/Home/Analysis
https://algotester.com/uk/ArchiveProble … File/40503 - умова задачі.
Програма працює, але алготестер каже, що програма неочікувано завершила роботу.
import java.util.Scanner;
public class Main {
    // код першої букви тобто 'A'
    static int symbol_code = 65;
    static char[][] arr;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt() , m = in.nextInt() , x = in.nextInt() , y = in.nextInt();
        //якщо площа буде парною або сума координат кота буде непарною, то розв'язків немає
        if ( (n % 2) ==0 || (m % 2) == 0 || ((x + y) % 2) == 1 ){
            System.out.println(-1);
            return;
        }
        arr = new char[n][m];
        --x;--y;
        arr[y][x] = '@';
        //заповнюємо плитками горизонтально зліва та справа
        Main.put_horizontal(x,m,n);
        //заповнюємо плитками вертикально зверху та знизу
        Main.put_vertical(y,n,m);
        //перевіряємо чи біля кота є пусті клітник якщо є, то заповнюємо по колу плитками
        Main.check(x,y,n,m);
        //виводимо масив
        for (int i = 0; i < n; i++){
            for(int j =0; j < m; j++){
                System.out.print(arr[i][j] );
            }
            System.out.println("");
        }
    }
    private static void put_horizontal(int x, int m, int n){
        m--;
        int left = 0;
        //поки відстань між крайньою коодинатою і абсцисою кота більша рівна 2, то зверху вниз вкладаємо плитки горизонтально
        while ( m - x >= 2){
            for ( int i =0; i < n; i++){
                arr[i][m] = arr[i][m-1] = (char)symbol_code;
                symbol_code++;
                //якщо код символу рівний 91, то це означає, що великі літери закінчилися, тому
                //ми присвоюємо символ коду значення 97, тобто переходимо на маленьки літери
                if (symbol_code == 91) symbol_code = 97;
            }
            //тепер ми заложили плитки горизонтально і тому крайню праву координату зменшуємо на 2
            m-=2;
        }
        //аналогічно, тільки тепер заповнюємо злівої сторони
        while ( x - left >= 2){
            for ( int i =0; i < n; i++){
                arr[i][left] = arr[i][left+1] = (char)symbol_code;
                symbol_code++;
                //якщо код символу рівний 91, то це означає, що великі літери закінчилися, тому
                //ми присвоюємо символ коду значення 97, тобто переходимо на маленьки літери
                if (symbol_code == 91) symbol_code = 97;
            }
            //тепер ми заложили плитки горизонтально і тому крайню ліву координату збільшуємо на 2
            left+=2;
        }
    }
    private static void put_vertical(int y, int n, int m){
        n--;
        int top = 0;
        // поки відстань між нижньою коднинаю і ординатою кота більша рівна 2 заложуємо плитку вертикально
        while (n - y >= 2) {
            //йдемо зліва направо
            for (int j = 0; j < m; j++){
                if (arr[n][j] == 0 && arr[n-1][j] == 0){
                    arr[n][j] = arr[n-1][j] = (char)symbol_code;
                    symbol_code++;
                    if (symbol_code == 91) symbol_code = 97;
                }
            }
            n-=2;
        }
        //аналогічно тільки тепер зверху на котом
        while (y - top >= 2) {
            for (int j = 0; j < m; j++){
                if (arr[top][j] == 0 && arr[top+1][j] == 0){
                    arr[top][j] = arr[top+1][j] = (char)symbol_code;
                    symbol_code++;
                    if (symbol_code == 91) symbol_code = 97;
                }
            }
            top+=2;
        }
    }
    private static void check(int x, int y, int n, int m){
        boolean empty = false;
        /*якщо координата не виходить за межі масиву, то перевіряємо чи ця клітинка пуста
        і так кожну клітинку
        праворуч, ліворуч, зверху та знизу біля кота*/
        if (x + 1 < m) if ( arr[y][x+1] == 0) empty = true;
        if (x - 1 >= 0) if ( arr[y][x-1] == 0) empty = true;
        if (y + 1 < n) if ( arr[y+1][x] == 0) empty = true;
        if (y - 1 >= 0) if ( arr[y-1][x] == 0) empty = true;
        //якщо є пуста клітинка то це означає, що кругом кота пусто, тому ми по колу застеляємо плитку
        if (empty == true){
            arr[y-1][x-1] =  arr[y-1][x] = (char) symbol_code;
            symbol_code++;
            if (symbol_code == 91) symbol_code = 97;
            arr[y-1][x+1] = arr[y][x+1] = (char) symbol_code;
            symbol_code++;
            if (symbol_code == 91) symbol_code = 97;
            arr[y+1][x+1] = arr[y+1][x] = (char) symbol_code;
            symbol_code++;
            if (symbol_code == 91) symbol_code = 97;
            arr[y+1][x-1] = arr[y][x-1] = (char) symbol_code;
        }
    }
}Дякую за допомогу і витрачений час!