Language:

English
Russian

Практикум по программированию

Для участников:
Регистрация  ||   Вход
Список соревнований
Вы не вошли в систему! Вход или регистрация.

Присвоения

Time limit:2 sec.
Memory limit: 262144 KByte

Задан числовой массив A[1..N]. Необходимо выполнить M операций, где каждая операция может быть двух видов:

  1. вывести сумму всех элементов на отрезке [L, R],
  2. присвоить всем элементам на отрезке [L, R] значение V.

Входные данные

Первая строка входных данных содержит число N – размер массива.

Во второй строке записаны N чисел – элементы массива.

Третья строка содержит число M – количество запросов.

Следующие M строк содержат по три или четыре целых числа. Первое число T задаёт тип операции: 1, если нужно найти сумму на отрезке, 2 – если нужно присвоить значение всем элементам отрезка. Далее идут два либо три числа, смысл которых зависит от T:

  • Если T = 1, то последующие два числа L и R задают отрезок, сумму на котором надо найти.
  • Если T = 2, то последующие три числа L, R и V задают отрезок и значение, которое нужно присвоить всем элементам отрезка.

Ограничения: все числа во входных данных натуральные, не превосходящие 105. Также 1 ≤ L ≤ R ≤ N, 1 ≤ i ≤ N.

Выходные данные

Для каждого запроса первого типа выведите на отдельной строке найденную сумму.

Пример

Входные данные
4
3 1 8 7
3
1 1 3
2 2 3 5
1 1 3
Выходные данные
12
13
© Copyright ВоГУ, АВТ, Носов Д.А., Смоленцев К.Н.