Чемпионат по устному счету Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Председатель жюри чемпионата по устному счету Иван Михайлович Минусов придумал новое
задание для участников чемпионата. Исходно на доске выписывается n целых чисел: a1, a2, . . . , an.
После этого участник должен выполнять команды двух типов:
1. Стереть i-е число с доски и записать вместо него число x. То есть, если на доске
были записаны числа a1, a2, . . . , an, то после выполнения команды числа будут равны:
a1, . . . , ai−1, x, ai+1, . . . , an.
2. Циклически сдвинуть последовательность чисел на k вправо. То есть, если на доске
были записаны числа a1, a2, . . . , an, то после выполнения команды числа будут равны:
an−k+1, an−k+2, . . . , an, a1, a2, . . . , an−k.
После выполнения каждой команды участник должен вычислить сумму всех чисел, записанных
на доске, и сообщить ее жюри. Чтобы подготовиться проверять ответы участников, членам жюри
необходимо самим вычислить требуемые суммы.
Формат входных данных
В первой строке записано целое число n — количество чисел, изначально записанных на доске
(2 6 n 6 105
).
Во второй строке через пробел записаны n целых чисел: a1, a2, . . . , an — числа, изначально выписанные на доске — (−109 6 ai 6 109
).
В третьей строке записано целое число q — количество команд, которые необходимо выполнить
(1 6 q 6 105
).
В каждой из следующих q строк записана очередная команда в следующем формате:
• 1 i x — это означает, что что участник должен заменить i-е число последовательности на
число x (1 6 i 6 n; −109 6 x 6 109
).
• 2 k — это означает, что участник должен циклически сдвинуть последовательность чисел на
k вправо (1 6 k < n).
Формат выходных данных
В качестве ответа выведите q строк, в каждой из которых записано одно целое число.
В i-й строке должна быть записана сумма чисел на доске после выполнения первых i команд.
Данная задача описывает процесс выполнения команд над последовательностью чисел на доске. Для выполнения этой задачи мы можем использовать массив чисел. Давай создадим этот массив и запишем в него исходные числа, которые записаны на доске.
Сначала нам нужно прочитать входные данные. В первой строке находится число n - количество чисел на доске, и мы можем создать массив размером n. Во второй строке записаны сами числа, которые мы можем считать и записать в массив. В третьей строке находится число q - количество команд, которые нужно выполнить. Затем следуют q строк с командами.
Для выполнения команд нам пригодятся два цикла: внешний цикл будет выполнять q раз, а внутренний цикл будет выполняться в зависимости от типа команды.
Перед началом выполнения команд создадим переменную sum, в которой будем хранить текущую сумму чисел на доске. Изначально сумма равна сумме всех исходных чисел.
Теперь приступим к выполнению команд. В зависимости от типа команды у нас будет разное поведение.
1. Команда типа "1 i x" означает, что нужно заменить i-е число последовательности на число x. Для этого нам достаточно обновить значение i-го элемента массива и вычислить новую сумму чисел на доске.
Для выполнения этой команды нам нужно считать значения i и x из строки команды, обновить i-й элемент массива чисел и вычислить новую сумму при помощи цикла. После этого мы должны вывести текущую сумму на экран.
Например, если у нас изначально были числа [5, 2, 7, 9] на доске, и мы получили команду "1 2 4", то мы должны обновить значение второго элемента массива на 4 и вычислить новую сумму чисел на доске, которая будет равна 5 + 4 + 7 + 9 = 25.
2. Команда типа "2 k" означает, что нужно циклически сдвинуть последовательность чисел на k вправо. Для этого нам нужно сделать следующую операцию: перенести последние k элементов массива в начало массива, а все остальные элементы сдвинуть вправо.
Для выполнения этой команды нам нужно считать значение k из строки команды и выполнить соответствующую операцию над массивом чисел. После этого мы должны вывести текущую сумму на экран.
Например, если у нас изначально были числа [5, 2, 7, 9] на доске, и мы получили команду "2 2", то мы должны выполнить следующую операцию над массивом: [7, 9, 5, 2]. После этого мы должны вычислить новую сумму чисел на доске, которая будет равна 7 + 9 + 5 + 2 = 23.
Таким образом, после выполнения каждой команды мы должны выводить текущую сумму чисел на доске на экран.
Надеюсь, эта информация помогла тебе понять, как решить данную задачу. Если у тебя возникнут дополнительные вопросы, не стесняйся задавать их мне!