Запросы
У вас есть массив a
длиной n
. Вам предстоит обработать q
запросов двух типов:
Изменить
p
-й элемент массиваa
наv
.Найти
p
-й элемент массиваa
.
Протокол взаимодействия
Вам необходимо реализовать три функции:
void init(integer n, array of integers a)
n
— длина массива;a
— массив целых чисел;эта функция вызывается первой и только один раз. Она необходима для передачи размера массива и самого массива. Только после её вызова будут использоваться другие две функции.
void upd(integer p, integer v)
p
— позиция;v
— новое значение;эта функция вызывается для обработки запроса первого типа.
integer ask(integer p)
p
— позиция;эта функция вызывается для обработки запроса второго типа;
функция должна вернуть целое число — ответ на запрос.
Формат входных данных
Первая строка содержит два целых числа n и m (1 ⩽ n ⩽ 100, 1 ⩽ m ⩽ 1 000) — длина массива и количество запросов.
Вторая строка содержит n целых чисел a[1]
, a[2]
, ..., a[n]
(1 ⩽ a[i]
⩽ 100) — элементы массива.Каждая из следующих m
строк описывает запрос и имеет один из следующих форматов:
«1 p v» (1 ⩽ p ⩽ n, 1 ⩽ v ⩽ 100) — позиция и новое значение.
«2 p» (1 ⩽ p ⩽ n) — позиция.
Формат выходных данных
После каждого запроса второго типа выводите одно целое число — ответ на него.
Блоки:
(20 баллов) n ⩽ 10; m ⩽ 100;
a[i]
,v[i]
⩽ 20;(20 баллов) n ⩽ 30; m ⩽ 300;
a[i]
,v[i]
⩽ 30;(20 баллов) n ⩽ 50; m ⩽ 500;
a[i]
,v[i]
⩽ 50;(20 баллов) n ⩽ 75; m ⩽ 750;
a[i]
,v[i]
⩽ 75;(20 баллов) без дополнительных ограничений.