Олимпиадный тренинг

Задача . G. Запрещенное значение


Поликарп редактирует очень сложную программу. Сначала определяется переменная \(x\), ей присваивается значение \(0\). Затем следуют инструкции двух типов:

  1. set \(y\) \(v\) — присвоить переменной \(x\) значение \(y\) или потратить \(v\) бурлей, чтобы удалить эту инструкцию (и, соответственно, не изменять \(x\));
  2. блок if \(y\) \(\dots\) end — выполнить инструкции внутри блока if, если значение \(x\) равно \(y\), и пропустить блок иначе.

Внутри блоков if могут содержаться set инструкции и другие блоки if.

Однако, когда значение \(x\) становится равно \(s\), компьютер ломается и тут же возгорается. Поликарп не хочет этого допустить, и в то же время потратить как можно меньше бурлей.

Какую минимальную сумму бурлей можно потратить на удаление set инструкций, чтобы никогда не присвоить \(x\) значение \(s\)?

Входные данные

В первой строке записано два целы числа \(n\) и \(s\) (\(1 \le n \le 2 \cdot 10^5\), \(1 \le s \le 2 \cdot 10^5\)) — количество строк в программе и запрещенное значение \(x\).

Следующие \(n\) строк задают программу. Каждая строка одного из трех типов:

  1. set \(y\) \(v\) \((0 \le y \le 2 \cdot 10^5, 1 \le v \le 10^9)\);
  2. if \(y\) \((0 \le y \le 2 \cdot 10^5)\);
  3. end.

Каждая if инструкция имеет парную end инструкцию. Каждая end инструкция имеет парную if инструкцию.

Выходные данные

Выведите одно целое число — минимальную сумму бурлей, которую Поликарп может потратить на удаление set инструкций, чтобы никогда не присвоить \(x\) значение \(s\).


Примеры
Входные данныеВыходные данные
1 5 1
set 1 10
set 2 15
if 2
set 1 7
end
17
2 7 2
set 3 4
if 3
set 10 4
set 2 7
set 10 1
end
set 4 2
4
3 9 200
if 0
set 5 5
if 5
set 100 13
end
if 100
set 200 1
end
end
1
4 1 10
set 1 15
0

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя