eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Купання Містера 01011

Купання Містера 01011

Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB

В один прохолодний вечір Містер 01011 захотів покупатися в своєму резервуарі з деякою рідиною густини ρ. Але ця рідина була надзвичайно холодною, тому купатися було неможливим. Тоді, щоб провести якнайбільше часу в своєму чарівному резервуарі, який складається з N відділень різної густини , Містер 01011 придумав провести пару експериментів з плавання тіл в резервуарі (цим тілам температура рідин в резервуарі байдужа). Кожне тіло має вмонтований пристрій, який дозволяє миттєво збільшувати чи зменшувати об'єм тіла. Тіло – звичайний куб з заданою густиною та довжиною ребра. При зануренні тіла у деякий резервуар деяка частина тіла виявиться зануреною. Вас буде цікавити власне об’єм зануреної частини тіла.

Кожен експеримент складається з наступних випадків:

  • Покласти тіло в деякий резервуар (INS)

  • Забрати тіло з деякого резервуару (DEL)

  • Приклеїти до деякого тіла з деякого резервуару тіло такої самої густини деякого об'єму Y (INC)

  • Відрізати від деякого тіла з деякого резервуарі частину тіла деякого об'єму Y (DEC)

  • Для кожного тіла, яке лежить в резервуарах [L, R], треба порахувати об’єм зануреної його частини, і потім результатом на запит буде сума усіх об’ємів занурених частин (CALC).

Усі процеси відбуваються при сталих температурі та тиску.

Вхідні дані

На вхід подається ціле число N (N10^5) – кількість резервуарів. У наступних N рядках задано густину рідини у кожному резервуарі ρ_i кг/м­^3 (1ρ_i20000, дійсне число). У наступному рядку задано число Q (Q10^5) – кількість експериментів. Кожний з наступних Q рядків має один з наступних виглядів:

  • INS X Y Z – де X – номер резервуару в який поміщають тіло (ціле число), Y – густина тіла (1Y20000, дійсне число, в кг/м­^3), Z – сторона ребра куба (1Z1000, дійсне число, задано в метрах).

  • DEL X – де X (ціле число) – порядковий номер куба, який треба забрати з деякого резервуару. Якщо цей куб ще не покладено у ніякий резервуар, дану команду потрібно ігнорувати.

  • INC X Y – де X (ціле число) – порядковий номер куба, який збільшується в обємі, Y (1Y10^9, дійсне число, в м^3) – величина збільшення об’єму. Якщо цей куб ще не було покладено у деякий резервуар чи уже було забрано з нього, то дану команду ігнорувати.

  • DEC X Y – де X (ціле число) – порядковий номер куба, який зменшується у об'ємі, Y (1Y10^9, дійсне число, в м^3) – величина зменшення об’єму. Якщо цей куб ще не було покладено у деякий резервуар чи уже було забрано з нього, то дану команду ігнорувати. Якщо тіло має об’єм, менший за Y, то просто вважати, що в резервуарі знаходиться тіло масою 0 та об’ємом 0.

  • CALC L R – де L, R (1L, RN) – цілі числа. Порахувати сумарний об’єм занурених частин тіл, що знаходяться у резервуарах з номерами від L до R.

Кожен резервуар має достатню кількість місця, щоб рідина з нього при зануренні не виливалася. Тіла отримають порядкові номера починаючи з 1 у тій послідовності, у якій вони ідуть у запитах INS.

Вихідні дані

Після кожного запиту вивести відповідь на запит CALC 1 N у новому рядку, а також додатково після запитів типу CALC виводити з нового рядочка відповідь на нього. Тобто, якщо поступив запит CALC L R, то спочатку надати відповідь на запит типу CALC 1 N, а потім з нового рядочку на запит CALC L R.

Відповіді на запити виводити з точністю не менше 4 знаків після коми.

Пояснення до прикладу: У нас є 5 резервуарів з густиною 1000. Також є 10 запитів.

  1. INS 1 800 2 – виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  2. INC 1 4 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  3. DEL 2 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  4. INS 3 1200 5 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  5. INS 4 300 10 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  6. DEC 2 25 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  7. CALC 1 3 – виводимо на екран результат запиту CALC 1 5 а тоді виконуємо даний запит

  8. INC 3 500 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

  9. CALC 3 4 3 – виводимо на екран результат запиту CALC 1 5 а тоді виконуємо даний запит

  10. DEL 1 - виконуємо даний запит та на екран виводимо результат запиту CALC 1 5

Приклад

Вхідні дані #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
Вихідні дані #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