eolymp
bolt
Try our new interface for solving problems
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}
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
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