Ошибка ввода Java

В HackerEarth есть один практический вопрос

В. Некоторые проблемы кажутся трудными, хотя они очень легки. Сегодня Аакаш застрял в проблеме запроса диапазона. Ему был дан массив только с номерами 0 и 1. Есть два типа запросов -

0 L R: проверьте, является ли число, сформированное из элементов массива от L до R, четным или нечетным, и выведите EVEN или ODD соответственно. Формирование числа - это двоичное число из состояния битов в массиве от L до R

1 X: перевернуть X-й бит в массиве

Индексирование основано на 1

вход
Первая строка содержит числа N и Q в качестве ввода. Следующая строка содержит N пробелов, разделенных 0 или 1. Следующие Q строк содержат описание каждого запроса

Выход
Выведите только для запроса типа 0 L R, независимо от того, является ли число в диапазоне от L до R "ДАЖЕ" или "ODD" (без кавычек).

Ограничения
1≤ N ≤ 10 ^ 6
1≤ L ≤ R ≤ 10 ^ 6
1≤ Q ≤ 10 ^ 6

1≤ X ≤ N


Я написал код на Java, он отлично работает с одним входом, но когда запускается несколько тестовых сценариев, он выдает ошибку, где я ошибаюсь. Мой код ниже. Я всегда сталкиваюсь с проблемой, принимая вход в зависимости от вопроса. Может кто-нибудь объяснить мне, каковы аспекты класса Scanner в Java и что происходит, когда мы используем один экземпляр сканера для многократного ввода входных данных внутри цикла. Благодарю вас

public class Solution{

    public static int[] flip(int [] array){
        Scanner in = new Scanner(System.in);
        int value = in.nextInt();
        int pos = in.nextInt();
        array[pos-1] = value;
        in.close();
        return array;
    }
    public static boolean checkForOdd(int[] array){
        Scanner sc1 = new Scanner(System.in);
        int L = sc1.nextInt();
        int R = sc1.nextInt();
        sc1.close();
        if(L==R){
            return array[R-1]==1;
        }
        else if(L>R){
            return false;
        }
        return array[R-1]==1;

    }
    public static void main(String []Args)throws IOException{
        Scanner scan  =  new Scanner(System.in);
        int N = scan.nextInt();
        int Q = scan.nextInt();
        int[] array = new int[N];
        for(int i = 0 ;i<N;i++){
            array[i] = scan.nextInt();
        }
        scan.close();
        while(Q!=0){
            //BufferedReader br = new BufferedReader(new 
            //InputStreamReader(System.in));
            //int pos = br.read();
            //int value = br.read();
            array = flip(array[]);
            if(checkForOdd(array)){
               System.out.println("ODD"); 
            }  
            else{**strong text**
                System.out.println("EVEN");
            }   
            Q--;
        }
    }
}

0 ответов

Другие вопросы по тегам