Купание Мистера 01011
В один прохладный вечер Містер 01011 захотел искупаться в своём резервуаре с некоторой жидкостью плотностью ρ. Но эта жидкость была чрезвычайно холодной, поэтому купаться было невозможно. Тогда, чтобы провести как можно больше времени в своём волшебном резервуаре, который состоит из N отделений разной плотности , Мистер 01011 решил провести несколько экспериментов по плаванию тел в резервуаре (этим телам температура жидкости в резервуаре безразлична). Каждое тело имеет вмонтированное устройство, которое позволяет мгновенно увеличивать или уменьшать обём тела. Тело – обычный куб с заданной плотностью и длиной ребра. При погружении тела в некоторый резервуар некоторая часть тела окажется погруженной в воду. Вас будет интересовать собственно объём погруженной части тела.
Каждый эксперимент состоит и следующих случаев:
Положить тело в некоторый резервуар (INS)
Забрать тело с некоторого резервуара (DEL)
Увеличить объём некоторого тела в некотором резервуаре (INC)
Уменьшить объём некоторого тела в некотором резервуаре (DEC)
Для каждого тела, лежащего в резервуаре [L, R], нужно посчитать объём погруженной его части, и потом результатом на запрос будет сумма всех объёмовов погружённых частей (CALC).
Все процессы происходят при постоянных температуре и давлении.
Входные данные
На вход подаётся целое число N (N ≤ 10^5) – количество резервуаров. В последующих N строках задано плотность жидкости в каждом резервуаре ρ_i кг/м^3 (1 ≤ ρ_i ≤ 20000, вещественное число). В следудующей строке задано число Q (Q ≤ 10^5) – количество экспериментов. Каждая из последующих Q строк имеет один из следующих видов:
INS X Y Z – где X – номер резервуара, в который помещают тело (целое число), Y – плотность тела (1 ≤ Y ≤ 20000, вещественное число, в кг/м^3), Z – сторона ребра куба (1 ≤ Z ≤ 1000, вещественное число, задано в метрах).
DEL X – где X (целое число) – порядковый номер куба, который нужно забрать из некоторого резервуара. Если этот куб ещё не положен в никакой резервуар, данную команду нужно игнорировать.
INC X Y – где X (целое число) – порядковый номер куба, который увеличивается в размерах, Y (1 ≤ Y ≤ 10^9, вещественное число, в м^3) – величина увеличения объёма. Если этот куб ещё не был положен в некоторый резервуар или уже был забран из него то данную команду игнорировать.
DEC X Y – где X (целое число) – порядковый номер куба, который уменьшатся в размерах, Y (1 ≤ Y ≤ 10^9, вещественное число, в м^3) – величина уменьшения объёма. Если этот куб ещё не был положен в некоторый резервуар или уже был забран из него, то данную команду игнорировать. Если тело имеет объём, меньший за Y, то просто считать, чт в резервуаре находится тело массой 0 и объёмом 0.
CALC L R – где L, R (1 ≤ L, R ≤ N) – целые числа. Посчитать суммарный объём погруженных частей тел, находящихся в резервуарах с номерами от L до R.
Каждый резервуар имеет достаточное количество места, чтобы жидкость из него при погружении не выливалась. Тела получают порядковые номера начиная с 1 в той последовательности, в которой они идут в запросах INS.
Після каждого запроса вывести ответ на запрос CALC 1 N с новой строки, а также дополнительно после запросов типа CALC выводить с новой строки ответ на него. То есть, если поступил запрос CALC L R, то сначала нужно дать ответ на запрос типа CALC 1 N, а потом с новой строки на запрос CALC L R.
Ответы на запросы выводить с точностью не менее 4 знаков после запятой.
Пояснение к примеру: У нас есть 5 резервуаров с плотностью 1000. Также есть 10 запросов.
INS 1 800 2 – виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
INC 1 4 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
DEL 2 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
INS 3 1200 5 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
INS 4 300 10 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
DEC 2 25 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
CALC 1 3 – выводим на экран результат запроса CALC 1 5 а потом выполняем этот запрос
INC 3 500 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5
CALC 3 4 3 – выводим на экран результат запроса CALC 1 5 а потом выполняем этот запрос
DEL 1 - виполняем данный заппрос и на экран выводим результат запроса CALC 1 5