Олимпиадный тренинг

Задача . F. Проклятье


Вам даны два массива из целых чисел: \(a_1, a_2, \ldots, a_n\) и \(b_1, b_2, \ldots, b_m\)

Вам нужно определить, возможно ли превратить массив \(a\) в массив \(b\), используя следующую операцию некоторое количество раз.

  • Cреди всех непустых подмассивов\(^{\text{∗}}\) \(a\) выбрать любой с максимальной суммой и заменить этот подмассив на произвольный непустой массив целых чисел.

Если это возможно, вам нужно построить любую возможную последовательность операций. Ограничение: в вашем ответе сумма длин массивов, на которые идёт замена, не должна превышать \(n + m\) по всем операциям. А используемые числа по модулю не должны превышать \(10^9\).

\(^{\text{∗}}\)Массив \(a\) является подмассивом массива \(b\), если \(a\) может быть получен из \(b\) удалением нескольких (возможно, ни одного или всех) элементов с начала и нескольких (возможно, ни одного или всех) элементов с конца.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 200\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n, m\) (\(1 \le n, m \le 500\)) — длины массива \(a\) и \(b\).

Вторая строка каждого набора входных данных содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(-10^6 \le a_i \le 10^6\)) — элементы массива \(a\).

Третья строка каждого набора входных данных содержит \(m\) целых чисел \(b_1, b_2, \ldots, b_m\) (\(-10^6 \le b_i \le 10^6\)) — элементы массива \(b\).

Гарантируется, что сумма значений \(n\) по всем наборам входных данных не превосходит \(500\).

Гарантируется, что сумма значений \(m\) по всем наборам входных данных не превосходит \(500\).

Выходные данные

Для каждого набора входных данных выведите \(-1\), если невозможно преобразовать массив \(a\) в массив \(b\).

Иначе в первой строке выведите число операций \(0 \leq q \leq n + m\). Далее выведите операции в следующем формате в порядке выполнения:

В первой строке выведите три числа \(l, r, k\) (\(1 \leq l \leq r \leq |a|\)). А во второй строке \(k\) целых чисел \(c_1 \ldots c_k\). что означает замену отрезка \(a_l, \ldots, a_r\) на массив \(c_1, \ldots, c_k\).

Сумма \(k\) по всем \(q\) операциям не должна превышать \(n + m\). Также должно быть выполнено \(-10^9 \leq c_i \leq 10^9\).

Вам не нужно минимизировать число операций.

Примечание

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

\(\) [2, -3, 2, 0] \to [2, -3, -3] \to [-3, -3, -3] \to [-3, -7, -3] \to [-3, -7, 0] \(\)

Вы можете выводить или не выводить пустые строки. В примере пустые строки добавлены для удобства.


Примеры
Входные данныеВыходные данные
1 3
4 3
2 -3 2 0
-3 -7 0
2 1
-2 -2
2
5 4
-5 9 -3 5 -9
-6 6 -1 -9
4
3 4 1
-3 

1 1 1
-3 

2 2 1
-7 

3 3 1
0
 
-1

3
2 4 1
-5 

1 1 1
-6 

2 2 2
6 -1

time 3000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя