Məsələlər
Купание Мистера 01011
Купание Мистера 01011
\includegraphics{https://static.e-olymp.com/content/bf/bf2ad1e1d3aa7fbcd880734b5459abbc782097c6.jpg}
В один прохладный вечер Містер \textbf{01011} захотел искупаться в своём резервуаре с некоторой жидкостью плотностью \textbf{ρ}. Но эта жидкость была чрезвычайно холодной, поэтому купаться было невозможно. Тогда, чтобы провести как можно больше времени в своём волшебном резервуаре, который состоит из \textbf{N}\textit{ отделений }разной плотности , Мистер \textbf{01011} решил провести несколько экспериментов по плаванию тел в резервуаре (этим телам температура жидкости в резервуаре безразлична). Каждое тело имеет вмонтированное устройство, которое позволяет мгновенно увеличивать или уменьшать обём тела. Тело -- обычный куб с заданной плотностью и длиной ребра. При погружении тела в некоторый резервуар некоторая часть тела окажется погруженной в воду. Вас будет интересовать собственно объём погруженной части тела.
Каждый эксперимент состоит и следующих случаев:
\begin{itemize}
\item Положить тело в некоторый резервуар (\textbf{INS})
\item Забрать тело с некоторого резервуара (\textbf{DEL})
\item Увеличить объём некоторого тела в некотором резервуаре (\textbf{INC})
\item Уменьшить объём некоторого тела в некотором резервуаре (\textbf{DEC})
\item Для каждого тела, лежащего в резервуаре \[\textbf{L}, \textbf{R}\], нужно посчитать объём погруженной его части, и потом результатом на запрос будет сумма всех объёмовов погружённых частей (\textbf{CALC}).
\end{itemize}
Все процессы происходят при постоянных температуре и давлении.
\InputFile
На вход подаётся целое число \textbf{N} (\textbf{N} ≤ \textbf{10^5}) -- количество резервуаров. В последующих \textbf{N} строках задано плотность жидкости в каждом резервуаре \textbf{ρ_i} кг/м^3 (\textbf{1} ≤ \textbf{ρ_i} ≤ \textbf{20000}, вещественное число). В следудующей строке задано число \textbf{Q} (\textbf{Q} ≤ \textbf{10^5}) -- количество экспериментов. Каждая из последующих \textbf{Q} строк имеет один из следующих видов:
\begin{itemize}
\item \textbf{INS X Y Z} -- где \textbf{X} -- номер резервуара, в который помещают тело (целое число), \textbf{Y} -- плотность тела (\textbf{1} ≤ \textbf{Y} ≤ \textbf{20000}, вещественное число, в кг/м^3), \textbf{Z} -- сторона ребра куба (\textbf{1} ≤ \textbf{Z} ≤ \textbf{1000}, вещественное число, задано в метрах).
\item \textbf{DEL X} -- где \textbf{X} (целое число) -- порядковый номер куба, который нужно забрать из некоторого резервуара. Если этот куб ещё не положен в никакой резервуар, данную команду нужно игнорировать.
\item \textbf{INC X Y} -- где \textbf{X} (целое число) -- порядковый номер куба, который увеличивается в размерах, \textbf{Y} (\textbf{1} ≤ \textbf{Y} ≤ \textbf{10^9}, вещественное число, в м^3) -- величина увеличения объёма. Если этот куб ещё не был положен в некоторый резервуар или уже был забран из него то данную команду игнорировать.
\item \textbf{DEC X Y} -- где \textbf{X} (целое число) -- порядковый номер куба, который уменьшатся в размерах, \textbf{Y} (\textbf{1} ≤ \textbf{Y} ≤ \textbf{10^9}, вещественное число, в м^3) -- величина уменьшения объёма. Если этот куб ещё не был положен в некоторый резервуар или уже был забран из него, то данную команду игнорировать. Если тело имеет объём, меньший за \textbf{Y}, то просто считать, чт в резервуаре находится тело массой \textbf{0} и объёмом \textbf{0}.
\item \textbf{CALC L R} -- где \textbf{L}, \textbf{R} (\textbf{1} ≤ \textbf{L}, \textbf{R} ≤ \textbf{N}) -- целые числа. Посчитать суммарный объём погруженных частей тел, находящихся в резервуарах с номерами от \textbf{L} до \textbf{R}.
\end{itemize}
Каждый резервуар имеет достаточное количество места, чтобы жидкость из него при погружении не выливалась. Тела получают порядковые номера начиная с \textbf{1} в той последовательности, в которой они идут в запросах \textbf{INS}.
\InputFile
Після каждого запроса вывести ответ на запрос \textbf{CALC 1 N} с новой строки, а также дополнительно после запросов типа \textbf{CALC} выводить с новой строки ответ на него. То есть, если поступил запрос \textbf{CALC L R}, то сначала нужно дать ответ на запрос типа \textbf{CALC 1 N}, а потом с новой строки на запрос \textbf{CALC L R}.
Ответы на запросы выводить с точностью не менее 4 знаков после запятой.
\textbf{Пояснение к примеру}: У нас есть \textbf{5} резервуаров с плотностью \textbf{1000}. Также есть \textbf{10} запросов.
\begin{enumerate}
\item \textbf{INS 1 800 2} -- виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{INC 1 4} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{DEL 2} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{INS 3 1200 5} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{INS 4 300 10} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{DEC 2 25} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{CALC 1 3} -- выводим на экран результат запроса \textbf{CALC 1 5} а потом выполняем этот запрос
\item \textbf{INC 3 500} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\item \textbf{CALC 3 4 3} -- выводим на экран результат запроса \textbf{CALC 1 5} а потом выполняем этот запрос
\item \textbf{DEL 1} - виполняем данный заппрос и на экран выводим результат запроса \textbf{CALC 1 5}
\end{enumerate}
Giriş verilənləri #1
5 1000 1000 1000 1000 1000 10 INS 1 800 2 INC 1 4 DEL 2 INS 3 1200 5 INS 4 300 10 DEC 2 25 CALC 1 3 INC 3 500 CALC 3 4 DEL 1
Çıxış verilənləri #1
6.400000 9.600000 9.600000 134.600000 434.600000 409.600000 409.600000 109.600000 559.600000 559.600000 550.000000 550.000000