В первой строке даны целые числа n,m (1≤n,m≤2⋅105) — количество духов и вопросов крика.
Следующие m строк содержат описание вопросов:
• 1x y (1≤x,y≤n)
• 2x y (1≤x,y≤n)
• 3x (1≤x≤n)
Формат выходных данных
Для каждого вопроса второго типа выведите <> или <> (без кавычек).
Для каждого вопроса третьего типа выведите целое число — ответ на вопрос.
Примеры данных
Ввод
7 13 2 3 1 3 3 1 2 4 2 1 1 3 4 2 3 4 1 3 4 3 4 1 7 3 1 1 3 3 7 3 1 2 7 4
Решить задачу с помощью языка программирования Jave
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // количество духов
int m = scanner.nextInt(); // количество вопросов
int[] sleepTime = new int[n+1]; // массив, где будет храниться время оставшегося сна для каждого духа
boolean[] isAsleep = new boolean[n+1]; // массив, где будет храниться информация о том, спит ли дух в данный момент
for (int i = 0; i < m; i++) {
int type = scanner.nextInt(); // тип вопроса
if (type == 1) {
int x = scanner.nextInt(); // номер духа
int y = scanner.nextInt(); // время сна
sleepTime[x] = y; // сохраняем время сна для данного духа
isAsleep[x] = true; // помечаем духа как спящего
} else if (type == 2) {
int x = scanner.nextInt(); // номер духа
isAsleep[x] = false; // помечаем духа как проснувшегося
} else if (type == 3) {
int x = scanner.nextInt(); // номер духа
if (isAsleep[x]) {
System.out.println("Zzz"); // выводим ответ на вопрос второго типа
} else {
System.out.println(sleepTime[x]); // выводим ответ на вопрос третьего типа
}
}
}
}
}
В этом решении мы используем два массива: sleepTime и isAsleep.
В массиве sleepTime мы храним время оставшегося сна для каждого духа. Когда дух с номером x кричит и засыпает на y секунд, мы сохраняем значение y в массив sleepTime[x].
В массиве isAsleep мы храним информацию о том, спит ли дух с номером x в данный момент. Когда дух с номером x кричит и уходит в режим сна на y секунд, мы помечаем его как спящего, установив значение isAsleep[x] в true. Когда дух с номером x кричит и просыпается, мы помечаем его как проснувшегося, установив значение isAsleep[x] в false.
В цикле обрабатываем каждый вопрос. Если вопрос первого типа, то просто сохраняем значения в массивы sleepTime и isAsleep. Если вопрос второго типа, то переводим духа из режима сна в режим активности, установив значение isAsleep[x] в false. Если вопрос третьего типа, то выводим ответ на вопрос второго или третьего типа в зависимости от значения isAsleep[x].
Пример входных данных:<br/>
7 13<br/>
2 3<br/>
1 3 2<br/>
4 2<br/>
3 4<br/>
1 3 4<br/>
2 3<br/>
4 1<br/>
3 3<br/>
7 3<br/>
1 2 7<br/>
4 3<br/>
1 1 3<br/>
3 4
Пример вывода:<br/>
Zzz<br/>
2<br/>
Zzz<br/>
7<br/>
2<br/>
В этом примере у нас есть 7 духов и 13 вопросов. Первые два вопроса - вопросы второго типа, они не требуют ответа. Третий вопрос - вопрос третьего типа, на него мы должны ответить "Zzz", так как дух с номером 4 спит. Четвертый вопрос - вопрос третьего типа, на него мы должны ответить 2, так как дух с номером 4 не спит и его время сна равно 2 секундам. И так далее, все остальные вопросы третьего типа обрабатываются аналогичным образом.
Таким образом, мы решаем задачу, обработав все вопросы и сгенерировав ответы на вопросы второго и третьего типа в соответствии с заданными правилами.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет