Codeforces Round 600 (Div. 2) |
---|
Закончено |
Вам дано два массива $$$a[1 \dots n]$$$ и $$$b[1 \dots n]$$$ одинаковой длины $$$n$$$.
Чтобы проделать подъем, вам необходимо выбрать три таких целых числа $$$l, r, k$$$, что $$$1 \le l \le r \le n$$$ и $$$k > 0$$$. Затем, вы прибавляете $$$k$$$ к элементам $$$a_l, a_{l+1}, \ldots, a_r$$$.
К примеру, если массив $$$a = [3, 7, 1, 4, 1, 2]$$$, и вы выбираете $$$(l = 3, r = 5, k = 2)$$$, массив $$$a$$$ станет $$$[3, 7, \underline{3, 6, 3}, 2]$$$.
Вы можете применять эту операцию не более одного раза. Можете ли вы сделать массив $$$a$$$ равным массиву $$$b$$$?
(Мы считаем, что $$$a = b$$$ если и только если для всех $$$1 \le i \le n$$$, $$$a_i = b_i$$$)
В первой строке записано целое число $$$t$$$ ($$$1 \le t \le 20$$$) — количество тестовых случаев.
В первой строке каждого тестового случая записано целое число $$$n$$$ ($$$1 \le n \le 100\ 000$$$) — количество элементов в каждом массиве.
Во второй строке каждого тестового случая записаны $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le 1000$$$).
В третьей строке каждого тестового случая записаны $$$n$$$ целых чисел $$$b_1, b_2, \ldots, b_n$$$ ($$$1 \le b_i \le 1000$$$).
Гарантируется, что сумма $$$n$$$ по всем тестовым случаям не превосходит $$$10^5$$$.
Для каждого тестового случая выведите в отдельной строке «YES» если возможно сделать $$$a$$$ и $$$b$$$ равными за не более чем один подъем или «NO», иначе.
Вы можете выводить каждую букву в любом регистре (верхнем или нижнем).
4 6 3 7 1 4 1 2 3 7 3 6 3 2 5 1 1 1 1 1 1 2 1 3 1 2 42 42 42 42 1 7 6
YES NO YES NO
Первый тестовый случай разобран в условии: мы можем сделать подъем с параметрами $$$(l=3, r=5, k=2)$$$, чтобы превратить $$$a$$$ в $$$b$$$.
Во втором тестовом случае необходимо сделать хотя бы два подъема, чтобы превратить $$$a$$$ в $$$b$$$.
В третьем тестовом случае $$$a$$$ и $$$b$$$ уже равны исходно.
В четвертом тестовом случае невозможно превратить $$$a$$$ а $$$b$$$, потому что число $$$k$$$ должно быть положительным.
Название |
---|