Массивы

108 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Недавно дядя Фёдор прочитал в журнале «Мурзилка», что самый высокий водопад в мире — это водопад Анхель, высота которого составляет 1054 метра. «Вот было бы здорово посмотреть на такой водопад!», — размечтался он.

Но Венесуэла далеко, поэтому пока дядя Фёдор решил начать с исследования речки Сметанки, которая течет рядом с Простоквашино. Она начинается в холмах и постепенно спускается вниз, к деревне. Дядя Фёдор вместе с Шариком прошли вдоль всего течения Сметанки от ее истока. Иногда по пути им встречались водопады. Как дядя Фёдор узнал из той статьи в «Мурзилке», водопадом считается участок реки с постоянным углом наклона, превышающим 45 градусов, то есть такой участок, высота которого больше его длины.

Уже после путешествия, раз за разом перерисовывая карту Сметанки на бумагу, дядя Фёдор заметил, что если нарисовать вид Сметанки сбоку (то есть чем выше нарисована точка — тем выше она над уровнем моря, а чем правее — тем дальше она от истока и ближе к Простоквашино), то получается невозрастающая ломаная, которую очень легко анализировать. Каждый отрезок этой ломаной — это как раз участок реки с постоянным углом наклона, который может оказаться водопадом!

Проведя несколько вечеров за изучением карты Сметанки, дядя Фёдор вспомнил, что кроме водопадов бывают еще и каскады водопадов. Каскадом водопадов называется один или несколько идущих подряд водопадов. Высота каскада — это разница между высотами самой верхней и самой нижней точек, принадлежащих этому каскаду.

Теперь дяде Фёдору стало интересно, а какова высота самого высокого каскада водопадов на Сметанке? Помогите ему: по описанию реки, сделанному Шариком и дядей Фёдором, найдите это число.

Входные данные
В первой строке вводится число n (2<=n<=105 ) — количество вершин ломаной, описывающей речку Сметанку. В следующих n строках перечислены координаты этих точек, в i-й строчке записаны числа xi и yi — расстояние от точки до истока по горизонтали и высота точки над уровнем моря (0xi<=109, yi<=109 ). Точки перечислены начиная от истока реки, то есть начиная с точки, x-координата которой равна нулю, а y-координата — максимальная среди всех точек. Гарантируется, что река течет сверху вниз и слева направо, то есть каждая следующая точка находится не выше и не левее предыдущей.

Выходные данные
Выведите одно целое число: высоту самого высокого каскада водопадов на этой реке. Если на реке на самом деле нет водопадов, выведите 0.
Примеры
Входные данные Выходные данные
1 3
0 15
1 10
5 5
10
На весенних каникулах Оля долго обдумывала свое поведение и решила в четвертой четверти заниматься учебой побольше. Но уже первый урок биологии в новой четверти уничтожил все Олины благие намерения. Оле скучно, просто невыносимо скучно. От нечего делать она начала играть на своем телефоне в известную игру «Сапер».

На всякий случай напомним, в чем заключается эта игра. Игра происходит на поле размером N × M клеток, некоторые из которых «заминированы». Целью игры является открытие всех клеток, не содержащих мины.

Игрок открывает клетки, стараясь не открыть клетку с миной. Открыв клетку с миной, он проигрывает. Если под открытой ячейкой мины нет, то в ней появляется число, показывающее, сколько ячеек, соседствующих с только что открытой, «заминировано». Клетки считаются соседствующими, если у них есть общая сторона или общая вершина. Клетки, которые игрок считает «заминированными», можно пометить флажком, чтобы случайно не открыть их.

Оля играет в версию «Сапера» со встроенными подсказками. Одна из подсказок, «Показать ошибки», работает следующим образом. Если по соседству с клеткой, в которой записано некоторое число, находится больше флажков, чем может соседствовать с этой клеткой (то есть больше флажков, чем число, записанное в клетке), все флажки вокруг этой клетки подсвечиваются желтым цветом. Другие ошибки эта подсказка находить не умеет, иначе играть было бы совсем не интересно.

Ваша задача — по текущему состоянию игрового поля определить, какие флажки окажутся подсвечены желтым после запуска подсказки.

Входные данные
В первой строке содержатся два числа N и M, разделенные пробелами — высота и ширина таблицы соответственно (1 ≤ N ≤ 15, 1 ≤ M ≤ 15). В следующих N строчках содержится по M символов в каждой. Эти строчки задают игровое поле. Используются следующие обозначения:

F — флажок;

* — закрытая клетка;

Цифра от 0 до 8 — открытая клетка. Сама цифра обозначает, сколько суммарно мин находится в клетках, соседствующих с данной.

Выходные данные
В первой строке выведите количество флажков, которые окажутся подсвечены желтым, а в следующих N строчках выведите для каждого такого флажка его координаты — номер строки, а затем номер столбца, в котором стоит флажок. Флажки можно выводить в любом порядке.

Если подсвеченных флажков не будет, выведите единственное число 0
 
Примеры
Входные данные Выходные данные Пояснения
1 2 3
FFF
*2*
3
1 2
1 3
1 1
В тесте в клетке с координатами (2, 2) записано число 2, а касается она трех флажков, что больше двух. Значит, все эти три флажка будут подсвечены.
На прошлый день рождения Олегу подарили муравьиную ферму и трех больших муравьев для нее. Ферма представляет собой поле размером a × b клеток. Клетка с координатой (1, 1) находится в левом верхнем углу. Вскоре он заметил, что передвигаясь по своему вольеру, муравьи оставляют на белом песке следы разных цветов. На протяжении нескольких месяцев Олег наблюдал за своей фермой и, наконец, смог строго описать происходящее в вольере.

Клетки бывают четырех цветов:
  • белая (это значит, что клетка не покрашена ни одним из муравьев, обозначается цифрой 0)
  • красная (это — цвет следа первого муравья, обозначается цифрой 1)
  • желтая (это — цвет следа второго муравья, обозначается цифрой 2)
  • зеленая (это — цвет следа третьего муравья, обозначается цифрой 3)
Муравей умеет оставлять на клетке свой след, стирать с нее все следы, поворачиваться и делать шаг вперед. То, как он изменит цвет клетки и куда он повернется, зависит только от цвета клетки, на которой он сейчас стоит. Опишем один ход муравья.

Если муравей стоит на белой клетке, то он:
  • красит ее в свой цвет
  • поворачивается на 90°  вправо и делает шаг вперед
Если же муравей стоит не на белой клетке, то он:
  • стирает с нее след (то есть красит клетку в белый цвет)
  • поворачивается на 90º влево и делает шаг вперед
Если на пути муравья встречается граница фермы, шаг вперед он не делает.

Каждую минуту все три муравья по очереди делают один ход, причем сначала ходит первый, потом второй, потом третий.

Утром, уходя в школу, Олег чистит вольер так, что в начальный момент времени песок на всей ферме белый (то есть на нем нет никаких следов). Однако перемещения муравьев такие интересные, что мальчик не может нормально учиться, а вместо этого думает о своих любимцах. Сидя на занятиях, он старается понять, какой узор он увидит, когда вернется домой. Перед тем, как уйти на учебу, он записывает координаты всех своих питомцев. Олегу известно, что дома он будет ровно через T минут. Для того, чтобы Олег не отвлекался во время занятий на размышления о муравьях, напишите программу, которая сама воспроизведет рисунок, который получится на песке вольера через T минут.

Входные данные
В первой строке вводятся 3 числа a, b, T (1 ≤ a ≤ 100, 1 ≤ b ≤ 100, 1 ≤ T ≤ 103) — высота вольера, ширина вольера и время, которое Олега не будет дома, соответственно. Следующие три строки содержат описание положения муравьев. В каждой строке записано по 2 числа i, j (1 ≤ i ≤ a, 1 ≤ j ≤ b) — координаты муравьев (сначала записан номер строки, а затем номер столбца), причем в первой из строчек записаны координаты первого муравья, во второй — второго, а в третьей — третьего. Гарантируется, что в одной и той же клетке изначально не находилось двух муравьев. Изначально все муравьи смотрят вверх.

Выходные данные
Выведите состояние поля на момент времени T: a строк по b чисел в каждой через пробел. Каждое число обозначает цвет следа, оставленного в данной клетке вольера.
Ваня не очень-то любит людей, но, к сожалению, ему иногда все-таки приходится ездить на метро. В таких случаях ему помогают две вещи: наушники с любимыми «Scoprions» и правильно выбранное место. Поскольку Ваня хочет быть как можно дальше от всех людей, правильным местом считается такое место, расстояние от которого до ближайшего из соседей будет максимально возможным в вагоне. В вагоне N мест и они все расположены вдоль одной стены, причем вход в вагон находится у места с номером 1. Места идут подряд, без пропусков. Ваня понимает, что иногда правильных мест может быть несколько, и хочет сесть на ближайшее ко входу правильное место (то есть правильное место с минимальным номером).

Угадайте, какое место в вагоне займет Ваня.

Входные данные
В первой строке записано число N (1 ≤ N ≤ 105). В следующей строке через пробел записаны N чисел — 0 или 1. Число 0 обозначает свободное место, 1 — занятое; места нумеруются слева направо. Гарантируется, что хотя бы одно место свободно.

Выходные данные
Выведите номер места, на которое Ваня сядет.
Примеры
Входные данные Выходные данные
1 8
1 0 1 0 0 1 0 1
2
2 7
0 1 0 0 0 1 0
4
3 4
0 0 0 1
1
Восьмиклассник Вениамин использует в качестве паролей только слова, которые есть в словаре, лежащем у него дома. Еще Вениамин знает, что его пятилетний брат Денис мечтает взломать его страницу в одной популярной социальной сети. Каждый раз, когда Вениамин вводит пароль, Денис стоит рядом и пытается запомнить, какие же кнопки его брат нажимает на клавиатуре. К сожалению, у Дениса не очень хорошая память, поэтому запоминает он только первую букву пароля, а когда Вениамин уходит в школу, берет словарь, лежащий у них дома (Денис точно знает, что Вениамин в качестве пароля использует слово из этого словаря), и по очереди пробует в качестве пароля все слова, начинающиеся на эту букву, причем пробует их в алфавитном порядке.

По списку всех слов в словаре помогите Вениамину выбрать пароль. Он должен быть такой, чтобы Денису пришлось перебрать как можно больше вариантов, прежде чем он найдет нужный.

Входные данные
В первой строчке вводится N — количество слов в cловаре (1 ≤ N ≤ 103). В следующих N строчках вводятся слова — строки длиной не более 255 символов, состоящие только из маленьких латинских букв. Слова отсортированы в алфавитном порядке.

Выходные данные
Выведите искомый пароль. Если подходящих паролей несколько, выведите тот, который идёт в словаре позже всех остальных.

Примеры
Входные данные Выходные данные
1 7
arhimed
computer
contest
informatics
programming
python
team
python
Саша и Лиза — две самые обычные девочки, которые живут в Москве и очень любят Санкт-Петербург. На каникулы они запланировали обширную экскурсионную программу в северной столице, осталось только купить билеты. Девочки знают, что быстрее всего добраться до Санкт-Петербурга можно на скоростном поезде «Сапсан». В каждом вагоне есть N рядов, в каждом из которых по 4 места, которые нумеруются так:

Саша и Лиза выбрали вагон, в котором они планируют ехать. Оказалось, что в этом вагоне уже продано M билетов и известно, какие места уже заняты. Девочки решили купить билеты таким образом:
  • если есть два места рядом, то они покупают их (например, 1 и 2 или 3 и 4)
  • если двух мест рядом нет, то они пытаются купить места рядом через проход (например, 2 и 4)
  • если нет и таких мест, то они покупают любые два свободных места.
Помогите Саше и Лизе определить, какие места им стоит купить. Гарантируется, что в выбранном вагоне есть как минимум два свободных места.

Входные данные
В первой строке входных данных содержатся числа N — количество рядов в вагоне (1 ≤ N ≤ 105) и M — количество проданных билетов (1 ≤ M ≤ 4N - 2). В следующей строке записаны M различных чисел — номера мест, на которые билеты уже проданы.

Выходные данные
Выведите два числа — номера мест, билеты на которые стоит купить девочкам. Если возможны несколько вариантов ответа, выведите любой из них.
Примеры
Входные данные Выходные данные
1 2 3
3 7 8
5 6
2 2 5
1 4 5 2 7
6 8
3 2 5
2 7 4 5 6
1 3
Дано N золотых слитков. Требуется распилить не более одного из них на две части (не обязательно равные, но с целой массой), после чего разделить слитки на две кучи равной массы.

Входные данные
В первой строке вводится одно натуральное число N, не превосходящее 100.

Во второй строке через пробел вводятся N натуральных чисел, не превосходящих 100 - массы имеющихся слитков.

Выходные данные
Выведите массы слитков, которые вошли в первую кучку (включая массу части распиленного слитка).

Если решений несколько, выведите любое из них.

Если решений нет, выведите фразу NO SOLUTION (заглавными буквами).

Выводить массы можно в произвольном порядке, но масса части распиленного слитка (если таковой имеется) должна быть последней.
Примеры
Входные данные Выходные данные
1 3
5 5 5
NO SOLUTION
2 4
1 2 3 8
1 2 3 1
Магическим квадратом называют таблицу, в которой записаны числа 123…  по одному разу, так что сумма чисел в каждой строке и в каждом столбце равные. Мы расскажем вам об одном из методов построения магических квадратов (его называют сиамским). Он годится только для построения квадратов с нечетной стороной (3355…) .

Поставим число 1 в верхнюю клетку центрального столбца. Далее будем двигаться по диагонали вправо-вверх, расставляя в клетки последовательно числа 234… . Если мы вышли за пределы таблицы вверх, то нужно перейти к нижней клетке того же столбца и продолжить с нее. Если мы вышли за правую границу, нужно перейти к левой клетке той строки, куда мы должны были попасть. Если же мы одновременно вышли и вверх, и вправо, то нужно перейти в левую нижнюю клетку квадрата.

Если в следующей клетке на нашем пути уже стоит число, то вместо хода “вправо-вверх” нужно сделать ход “вниз” (опять же, если мы при этом выйдем за границы квадрата, нужно перейти к верхней клетке того же столбца). Примеры для квадратов 33 и 55 показаны на рисунках.



Входные данные
На вход подается одно натуральное нечетное число N, не превосходящее 30 – размер квадрата.

Выходные данные
Выведите числа, записанные в квадрате. Выравнивать числа по столбцам не обязательно. Обратите внимание: требуется вывести именно магический квадрат, полученный применением указанного метода.
Примеры
Входные данные Выходные данные
1 3 8 1 6 
3 5 7 
4 9 2 
2 5 17 24 1 8 15 
23 5 7 14 16 
4 6 13 20 22 
10 12 19 21 3 
11 18 25 2 9 
Будильник в сотовом телефоне можно настроить так, чтобы он звонил каждый день в одно и то же время, либо в указанное время в определенный день недели. Независимо можно настроить несколько будильников.

По информации о будильниках и текущему времени и дню недели определите, когда прозвонит очередной будильник.

Входные данные
В первой строке вводятся три числа, задающие текущее время: день недели (от 1 до 7), часы и минуты.

Во второй строке вводится одно натуральное число N, не превосходящее 100 – количество будильников.

В следующих N строках вводятся описания N будильников. Описание каждого будильника состоит из трех чисел: дня недели (число от 1 до 7 для понедельника,  …, воскресенья, соответственно, 0 – если будильник должен звонить каждый день), часов (от 0 до 23), минут (от 0 до 59).


Выходные данные
Выведите  через пробел три числа, задающие день недели, часы и минуты, когда прозвонит ближайший будильник.
 
Примеры
Входные данные Выходные данные Пояснение
1 2 10 20
2
1 23 15
0 10 10
3 10 10  
2 7 1 1
3
7 0 59
7 23 59
7 1 1
7 1 1 Во втором примере третий будильник будет звенеть в начальный момент времени.
Комплект шахматного домино состоит из 32 костяшек 2x1, каждая из квадратов которой окрашен в черный или белый цвет (часть костяшек состоит из двух белых квадратов, часть – из двух черных, а часть из одного белого и одного черного). Комплект такого домино выложен на шахматную доску. Разрешается поворачивать костяшки домино на 180 градусов (менять местами их квадраты), оставляя каждую костяшку на своем месте. Требуется выяснить, можно ли так повернуть часть костей домино, чтобы в каждом горизонтальном ряду были квадраты только одного цвета.


Входные данные
Вводится 8 строк по 8 чисел. Каждое число соответствует номеру доминошки, которая покрывает данную клетку. Число положительное, если квадрат доминошки белый и отрицательное – если черный.


Выходные данные
Требуется вывести одно слово – YES или NO (заглавными буквами).
Примеры
Входные данные Выходные данные
1 1   2   2   7   7   8   8   9
  1   3   6  10  10  11  11   9
  4   3   6  31  31  24  23  12
  4   5   5  30  32  24  23  12
 28  29  29  30  32  25  22  13
 28  27  27  26  26  25  22  13
 18  19  19  20  20  21  21  14
 18  17  17  16  16  15  15  14
YES

Примечание:
Доминошки нумеруются числами от 1 до 32 в произвольном порядке.
 
Из шахматной доски по границам клеток выпилили связную (не распадающуюся на части) фигуру без дыр. Требуется определить ее периметр.

Входные данные
Сначала вводится число N (1 ≤ N ≤ 64) – количество выпиленных клеток. В следующих N строках вводятся координаты выпиленных клеток, разделенные пробелом (номер строки и столбца – числа от 1 до 8). Каждая выпиленная клетка указывается один раз.

Выходные данные
Выведите одно число – периметр выпиленной фигуры (сторона клетки равна единице).
Примеры
Входные данные Выходные данные Пояснения
1 3
1 1
1 2
2 1
8 Вырезан уголок из трех клеток. Сумма длин его сторон равна 8.
2 1
8 8
4 Вырезана одна клетка. Ее периметр равен 4.
Последовательность чисел назовем симметричной, если она одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными:
1 2 3 4 5 4 3 2 1
1 2 1 2 2 1 2 1
Вашей программе будет дана последовательность чисел. Требуется определить, какое минимальное количество и каких чисел надо приписать в конец этой последовательности, чтобы она стала симметричной.

Входные данные
Сначала вводится число N — количество элементов исходной последовательности (1 ≤ N ≤ 100). Далее идут N чисел — элементы этой последовательности, натуральные числа от 1 до 9.

Выходные данные
Выведите сначала число M — минимальное количество элементов, которое надо дописать к последовательности, а потом M чисел (каждое — от 1 до 9) — числа, которые надо дописать к последовательности.

Примеры
Входные данные Выходные данные
1 9
1 2 3 4 5 4 3 2 1
0
2 5
1 2 1 2 2
3
1 2 1
3 5
1 2 3 4 5
4
4 3 2 1
Пастбище Фермера Джона может быть представлено как огромная 2D-решётка ячеек (огромная шахматная доска). Изначально пастбище пустое.
Фермер Джон добавит N (1≤N≤105) коров на пастбище одну за одной. i-ая корова занимает ячейку (xi,yi), которая отличается от ячеек, занятых всеми другими коровами (0≤xi,yi≤1000).

Говорят, что корове "комфортабельно", если по горизонтали и вертикали она имеет ровно три других коровы. Фермер Джон хочет посчитать, скольким коровам комфортабельно на его пастбище. Для каждого i в интервале 1…N, выведите общее количество коров, которым комфортабельно после того, как i-ая корова добавлена на пастбище.

Входные данные: 
Первая строка содержит одно целое число N. Каждая из последующих N строк содержит два разделённых пробелом целых числа, указывающих (x,y) - координаты ячейки коровы. Гарантируется, что все ячейки различны.
Выходные данные: 
i-ая строка вывода должна содержать общее количество коров, которым комфортабельно после добавления i-ой коровы на пастбище.
 
Примеры
Входные данные Выходные данные Пояснение
1 8
0 1
1 0
1 1
1 2
2 1
2 2
3 1
3 2
0
0
0
1
0
0
1
2
После того, как добавлены первые 4 коровы, корове в ячейке (1,1) стало комфортабельно.
После того, как добавлены первые 7 коров, корове в ячейке (2,1) стало комфортабельно.
После того, как добавлены первые 8 коров, корове в ячейках (2,1) и (2,2) стало комфортабельно.

Напишите программу, которая вычисляет сумму элементов матрицы.

Входные данные: В первой строке записаны через пробел размеры матрицы: количество строк и количество столбцов ( 1 <= M <= 100 ). В следующих строках записаны строки матрицы, в каждой – по натуральных чисел, разделённых пробелами.

Выходные данные: Программа должна вывести одно число – сумму элементов матрицы.

Примеры
Входные данные Выходные данные
1 4 5
1 2 3 4 5
6 12 8 9 10
11 12 12 14 15
16 17 18 12 20
207
37506#37506
Напишите программу, которая в последовательности целых чисел определяет значение наименьшего числа из всех четных введенных чисел. Программа получает на вход целые положительные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введенные числа не превышают 30 000.  Среди  введенных чисел есть хотя бы одно четное
Программа должна вывести одно число: наименьшее из всех четных введенных чисел

Пример работы программы
 
Входные данные
10
7
12
0
Выходные данные
10
37505#37505
Напишите программу, которая в последовательности целых чисел определяет сумму четных чисел, принадлежащих интервалу (15,190). Программа получает на вход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000.
Программа должна вывести одно число: сумму четных чисел, принадлежащих интервалу (15,190).

Пример работы программы
 
Входные данные
5
15
25
48
180
196
0
Выходные данные
228
37504#37504
Напишите программу, которая в последовательности целых чисел определяет сумму двузначных нечетных чисел. Программа получает на вход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000.
Программа должна вывести одно число: сумму двузначных нечетных чисел.

Пример работы программы
 
Входные данные
11
15
30
9
0
Выходные данные
26
12.25н#37075
Даны числа n и m. Создайте массив A[n][m] и заполните его, как показано на примере.

Формат входных данных
Программа получает на вход два числа n и m.

Формат выходных данных
Программа должна вывести полученный массив. Элементы строки должны разделяться одним пробелом, кроме этого, одно число необходимо записывать в трех знакоместах.
 
Примеры
Входные данные Выходные данные
1 4 5
 17  16   9   8   1 
 18  15  10   7   2 
 19  14  11   6   3 
 20  13  12   5   4 

У Фили есть квадратная матрица \(A\) размера \(N \times N\), но она кажется ему слишком большой. Ему гораздо больше нравятся матрицы размера \(k \times k\) (\(k < N\)).

Филя хочет получить матрицу нужного размера взяв некоторую подматрицу исходной матрицы. Подматрицей \(k \times k\) матрицы \(A\) в данном случае Филя считает матрицу \(B\) такую, что \(b_{i, j} = a_{i + x, j + y}\), для всех \(i\), \(j\) от \(1\) до \(k\). Из данного определения можно заметить, что подматрица исходной матрицы задается парой чисел (\(x\), \(y\)).

Для того, чтобы выбрать наиболее интересную для себя подматрицу, Филя хочет узнать, сколько есть способов выбрать из исходной матрицы две различные (характеризующие пары (\(x\), \(y\)) отличаются хотя бы в одной позиции) равные подматрицы \(k \times k\). Две матрицы \(Q\) и \(P\) размера \(k \times k\) считаются равными, если для любых \(i, j: 1 \le i, j \le k\) выполняется \(q_{i, j} = p_{i, j}\). Если условия равенства не выполняется, матрицы считаются неравными.

Формат входных данных
В первой строке входного файла содержатся два натуральных числа \(N\) и \(k\) — размеры исходной и нужной матрицы. (\(1 \le k < N \le 10\)). В следующих \(N\) строках заданы через пробел по \(N\) натуральных чисел \(a_{i, j}\) — элементы исходной матрицы (\(1 \le a_{i, j} < 10\)).

Формат выходных данных
В единственной строке выходного файла выведите одно число — количество способов выбрать из исходной матрицы две различные равные подматрицы размера \(k \times k\).

Шифрование - это преобразование информации, делающее ее нечитаемой для посторонних. При этом доверенные лица могут провести дешифрование и прочитать исходную информацию.
Одним из самых известных алгоритмов шифрования является шифр Цезаря. Чтобы зашифровать последовательность, к каждому элементу последовательности прибавляется некоторое целое число. Так, например, из последовательности {1, 2, 3, 4} можно получить последовательность {5, 6, 7, 8} применением шифра Цезаря с ключом «+4».
Вы смогли перехватить две последовательности чисел A и B, которые оказались одинаковой длины. Нужно проверить, могла ли первая из них быть получена из второй применением шифра Цезаря.

Формат входных данных
В первой строке задано одно число n - длина последовательности (1≤n≤1000). Во второй строке находятся n целых чисел a1, a2, ..., an - последовательность A (−104 ≤ai≤104 ). В третьей строке находятся n целых чисел b1, b2, ..., bn - последовательность B (−104 ≤bi≤104 ).

Формат выходных данных
Выведите NO, если последовательность A нельзя получить из последовательности B шифром Цезаря, иначе выведите YES, а в следующей строке выведите ключ шифра с учетом знака.
Ввод Вывод
4
1 2 3 4
5 6 7 8
YES
4
2
1 2
2 1
NO
1
-1
-2
YES
-1

 
Поделиться
Класснуть