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

Добуток на відрізку

Добуток на відрізку

Це нормально відчувати себе схвильованим та напруженим за день до олімпіади з програмування. Щоб розслабитись, Ви пвшли випити зі своїми друзями у сусідній паб. Для збереження гостроти розуму до наступного дня, Ви вирішили зіграти у наступну гру. Для початку Ваші друзі написали послідовність \textbf{n }цілих чисел \textbf{x_1}, \textbf{x_2},..., \textbf{x_n}. Потім йде \textbf{k} раундів, у кожному з яких виконується одна з наступних команд: \begin{itemize} \item команда зміни, коли необхідно змінити одне значення у послідовності; \item команда множення, коли за заданими значеннями \textbf{i} та \textbf{j} необхідно визначити, чи є добуток \textbf{x_i} * \textbf{x_\{i+1\}} * ... * \textbf{x}_\{j-1\} * \textbf{x_j} доданим, від'ємним чи рівним нулю. \end{itemize} Так як Ви знаходитесь у пабі, то штрафом за неправильну відповідь буде вживання додаткової пінти пива. Ви турбуєтесь, що це може негативно вплинути на Вас при участі у конкурсі на наступний день, і у Вас немає бажання переввряти на коректність теорію піка Баллмера. На щастя, друзі дозволили Вам користуватись ноутбуком. Оскільки Ви більше довіряєте Вашим здібностям програмувати, ніж математиці, то було вирішено написати програму, яка допоможе зіграти у гру. \InputFile Кожен тест складається з декількох рядків. Перший рядок кожного тесту містить два числа \textbf{n} та \textbf{k} (\textbf{1} ≤ \textbf{n}, \textbf{k} ≤ \textbf{10^5}) - кількість елементів у послідовності та число раундів у грі. Другий рядок містить \textbf{n} цілих чисел \textbf{x_i} - початкові значення послідовності (\textbf{-100} ≤ \textbf{x}_i ≤ \textbf{100} для \textbf{i} = \textbf{1}, \textbf{2},..., \textbf{n}). Кожен з наступних \textbf{k} рядків описує команду, яка починається великою буквою '\textbf{C}' або '\textbf{P}'. Якщо це буква '\textbf{C}', то рядок містить команду заміни, за буквою йдуть два числа \textbf{i} та \textbf{v}, які вказують на те, що \textbf{x_i} необхідно замінити на \textbf{v} (\textbf{1} ≤ \textbf{i} ≤ \textbf{n} и \textbf{-100 }≤ \textbf{v} ≤ \textbf{100}). Якщо це буква '\textbf{P}', то рядок задає команду множення, за буквою йдуть два числа \textbf{i} та \textbf{j} - необхідно обчислити добуток від \textbf{x_i} до \textbf{x_j} включно (\textbf{1 }≤ \textbf{i} ≤ \textbf{j} ≤ \textbf{n}). Кожен тест містить як мінімум одну команду множення. \OutputFile Для кожного тесту вивести один рядок, який містить відповіді на всі команди множення. \textbf{i}-ий символ рядка є результатом \textbf{i}-ої команди множення. Якщо добуток додатний, то вивести символ '\textbf{+}' (плюс); якщо добуток від'ємний, то вивести '\textbf{-}' (мінус); якщо добуток дорівнює нулю, то вивести '\textbf{0}' (нуль).
Ліміт часу 2 секунди
Ліміт використання пам'яті 122.17 MiB
Вхідні дані #1
4 6
-2 6 0 -1
C 1 10
P 1 4
C 3 7
P 2 2
C 4 -5
P 1 4
5 9
1 5 -2 4 3
P 1 2
P 1 5
C 4 -5
P 1 5
P 4 5
C 3 0
P 1 5
C 4 -5
C 4 -5
Вихідні дані #1
0+-
+-+-0