| Demidov Open IT Cup 2025 |
|---|
| Finished |
Профессор Р. очень любит алгебру, особенно сильно он любит складывать числа. Недавно он изобрёл новый способ кодирования чисел – каждому целому неотрицательному числу он ставит в соответствие последовательность из пар, где первый элемент пары равен цифре, а второй – сколько раз подряд встречается эта цифра после предыдущих описанных цифр, причём корректным представлением является то, в котором количество пар минимально. Так, например, число $$$1333377$$$ будет записано в виде трёх пар: $$$(1, 1), (3, 4)$$$ и $$$(7, 2)$$$. Профессор решил взять числа $$$A$$$ и $$$B$$$, закодировать их, сложить и вывести результат в закодированном виде, однако у него не получилось это сделать. Тогда он пришёл с этой задачей к своим студентам и на паре по алгебре задал её на дом. Студенты тоже не смогли её решить и решили обратиться к вам.
Помогите бедным студентам – напишите программу, которая найдёт сумму двух чисел, заданных в закодированном виде и запишет её в том же формате, в котором были даны слагаемые.
В первой строке содержится число $$$N$$$ $$$(1 \le N \le 10^5)$$$ – количество блоков из подряд идущих цифр в числе $$$A$$$.
В следующих $$$N$$$ строках содержится описание числа $$$A$$$: каждая строка содержит $$$2$$$ числа – $$$Adigit_i~Acnt_i$$$ $$$(0 \le Adigit_i \le 9, 1 \le Acnt_i \le 10^{18})$$$, где $$$Adigit_i$$$ – $$$i$$$-я цифра, $$$Acnt_i$$$ – количество подряд идущих цифр $$$Adigit_i$$$.
В $$$N + 2$$$-й строке содержится число $$$M$$$ $$$(1 \le M \le 10^5)$$$ – количество блоков из подряд идущих цифр в числе $$$B$$$.
В следующих $$$M$$$ строках содержится описание числа $$$B$$$: каждая строка содержит $$$2$$$ числа – $$$Bdigit_i~Bcnt_i$$$ $$$(0 \le Bdigit_i \le 9, 1 \le Bcnt_i \le 10^{18})$$$, где $$$Bdigit_i$$$ – $$$i$$$-я цифра, $$$Bcnt_i$$$ – количество подряд идущих цифр $$$Bdigit_i$$$.
Гарантируется, что в описании чисел $$$A$$$ и $$$B$$$ нет ведущих нулей.
Также гарантируется что сумма всех $$$Acnt_i$$$ не превосходит $$$10^{18}$$$, также и сумма всех $$$Bcnt_i$$$ не превосходит $$$10^{18}$$$
В первой строке выведите $$$k$$$ – количество блоков из подряд идущих одинаковых цифр в сумме чисел $$$A$$$ и $$$B$$$.
В следующих $$$k$$$ строках выведите по $$$2$$$ числа $$$digit~cnt$$$, где $$$digit$$$ – очередная цифра числа, $$$cnt$$$ – сколько раз эта цифра идёт подряд в его записи. Сумма не должна содержать ведущих нулей.
11 312 2
2 1 1 3 2
21 23 128 17 1
2 2 1 0 2
10 121 23 1
2 1 2 3 1
Первый пример соответствует сумме чисел $$$111$$$ и $$$22$$$, их сумма равна $$$133$$$.
Второй пример соответствует сумме чисел $$$113$$$ и $$$87$$$, их сумма равна $$$200$$$.
| Name |
|---|


