n, m = map(int, input().split())
t = [{'A': 0, 'C': 0, 'G': 0, 'T': 0} for _ in range(n)]
for _ in range(m):
for i, c in enumerate(input()): t[i][c] += 1
input()
for _ in range(m - 1):
for i, c in enumerate(input()): t[i][c] -= 1
print(*[v[0] for r in t for v in r.items() if v[1]], sep='')
Для исходного набора считаем кол-во появлений каждой буквы в каждой позиции. А потом отнимаем кол-во появлений каждой буквы в каждой позиции итогового набора. Буквы, у которых число вхождений не равно 0 - это и есть "потерянная" строка.
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В данной задаче будем упрощенно считать, что ДНК представляется строкой длины от 10 до 100, состоящей из букв 'A', 'C', 'G', 'T'.
Пусть дано две ДНК D1 и D2 одной и той же длины n. Выберем некоторое произвольное число i от 1 до n - 1 и поменяем местами префиксы (начала) этих ДНК длины i. Будем говорить, что полученные новые две строки образованы путем скрещивания двух исходных по префиксу длины i.
Например, пусть D1 = AACGGTAGGT, а D2 = TCCCGGAACA. Выберем i = 4 и поменяем местами префиксы длины 4. Получим две новые ДНК, одна из которых будет иметь вид AACGGGAACA, а вторая будет иметь вид TCCCGTAGGT. Для наглядности мы выделили части первой из них.
Полученные новые ДНК снова могут быть скрещены по любому префиксу длины от 1 до n - 1.
Теперь можно рассмотреть популяцию из нескольких ДНК. Выберем из них две, произведем их скрещивание по префиксу какой-либо длины и поместим две новые ДНК в исходную популяцию. В данной задаче будем считать, что количество ДНК не увеличивается, то есть старые две ДНК заменяются на новые две ДНК.
Дана исходная популяция из m ДНК, каждая имеет одну и ту же длину n. После некоторого количества попарных скрещиваний была получена новая популяция. Но при итоговой обработке данных, сведения об одной ДНК из новой популяции были потеряны. Ваша задача состоит в отыскании этой потерянной ДНК по оставшимся m - 1 ДНК из новой популяции.
Формат ввода
В первой строке через пробел даны два числа n — длина ДНК и m — количество ДНК в исходной популяции. 10 ≤ n ≤ 100. 2 ≤ m ≤ 100.
В следующих m строках содержится описание исходной популяции ДНК, каждая задается строкой длины n, состоящей из символов 'A', 'C', 'G' и 'T'.
Далее следует разделяющая строка, содержащая n символов '-'.
Далее следует еще m - 1 строк, описывающих новую (заключительную) популяцию без одной ДНК.
Гарантируется, что данные верны, то есть m - 1 последняя ДНК является некоторой новой популяцией ровно без одной ДНК, полученной из исходной популяции, заданной в m первых строках
Формат вывода
Вывести недостающую утерянную ДНК.
Пример 1
Ввод Вывод
10 2
AACGGTAGGT
TCCCGGAACA
----------
TCCCGTAGGT
AACGGGAACA
Пример 2
Ввод Вывод
10 4
AACCGGTTAA
ACGTACGTAC
AAACCCGGGT
CATTACTGGA
----------
AAGCGCTTAA
CCACACGTGC
AACTAGGGGT
AATTCCTGAA