Codeforces Beta Round 10 |
---|
Закончено |
Эта задача отличается от той, которая предлагалась на онлайн-контесте.
Последовательность a1, a2, ..., an называется возрастающей, если ai < ai + 1 для i < n.
Последовательность s1, s2, ..., sk называется подпоследовательностью последовательности a1, a2, ..., an, если найдется такой набор индексов 1 ≤ i1 < i2 < ... < ik ≤ n, что aij = sj. Иными словами, последовательность s может быть получена из a путем вычеркивания некоторых элементов.
Вам задано две последовательности целых чисел. Найдите их наидлиннейшую общую возрастающую подпоследовательность, т.е. возрастающую последовательность наибольшей длины, которая является подпоследовательностью обеих последовательностей.
Первая строка содержит целое число n (1 ≤ n ≤ 500) - длину первой последовательности. Во второй строке записаны n целых чисел из диапазона [0, 109], разделенные пробелами — элементы первой последовательности. В третьей строке записано целое число m (1 ≤ m ≤ 500) - длина второй последовательности. Во четвертой строке записаны m целых чисел из диапазона [0, 109], разделенные пробелами — элементы второй последовательности.
В первой строке выведите k — длину наидлиннейшей общей возрастающей подпоследовательности. Во второй строке выведите саму подпоследовательность. Элементы отделяйте друг от друга пробелами. Если решений несколько, то выведите любое.
7
2 3 1 6 5 4 6
4
1 3 5 6
3
3 5 6
5
1 2 0 2 1
3
1 0 1
2
0 1
Название |
---|