Ошибка ввода 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--;
}
}
}