На уроке информатики Валерий изучал сжатие данных. Учитель рассказал новый метод, который мы сейчас вам опишем.
Пусть {a1, a2, ..., an} — данная последовательность строк, которую необходимо сжать. Здесь и далее будем считать, что все строки имеют одинаковую длину и состоят только из символов 0 и 1. Определим функцию сжатия:
Перед Валерой стоит серьезная задача — разделить данную последовательность {a1, a2, ..., an} на две подпоследовательности {b1, b2, ..., bk} и {c1, c2, ..., cm}, m + k = n, так, чтобы величина S = |f(b1, b2, ..., bk)| + |f(c1, c2, ..., cm)| приняла минимально возможное значение. Здесь |p| обозначает длину строки p.
Обратите внимание, что запрещается менять относительный порядок строк в подпоследовательностях. Разрешается делать одну из подпоследовательностей пустой. Каждый элемент исходной последовательности должен принадлежать ровно одной из получившихся подпоследовательностей. Элементы подпоследовательностей b и c не обязательно должны идти подряд в исходной последовательности a, то есть они могут чередоваться (смотрите примеры 2 и 3).
Помогите Валере найти минимальное возможное значение S.
В первой строке входных данных содержится целое число n — количество строк (1 ≤ n ≤ 2·105). Далее в n строках даны элементы последовательности — строки длиной от 1 до 20 символов, состоящие только из символов 0 и 1. На i + 1 строке входных данных находится i-ый член последовательности. Элементы последовательности разделены исключительно символом перевода строки. Гарантируется, что все строки имеют одинаковую длину.
Выведите единственное число — минимально возможное значение S.
3
01
10
01
4
4
000
111
110
001
8
5
10101
01010
11111
01000
10010
17
Подробные ответы к тестам:
Подзадача 1. N ≤ 10. Решение оценивается в 30 баллов.
Подзадача 2. N ≤ 1 000. Решение оценивается в 30 баллов.
Подзадача 3. Дополнительные ограничения отсутствуют. Решение оценивается в 40 баллов.
Подзадачи являются вложенными, т.е. баллы за подзадачу ставятся только при прохождении всех меньших подзадач.
Необходимо определить делится ли данное число на 15.
Натуральное число вводится своим двоичным представлением (длина числа не превышает 10000 двоичных разрядов).
Выведите «YES», если делится, и «NO», если нет.
11110
YES
110
NO
Дано число в K-ичной системе счисления. Найти остаток от деления его на m.
В первой строке даты три натуральных числа K, n, m в десятичной системе счисления (2 ≤ K ≤ 36, 1 ≤ n ≤ 104, 2 ≤ m ≤ 109). В следующей строке дано число в K-ичной системе счисления, длина которого равна n. Число состоит либо из цифр, либо из заглавных букв латинского алфавита.
Выведите остаток от деления данного числа на m (в десятичной системе счисления).
2 5 11
11110
8
36 2 17
AZ
4
Дано целое число x (0 ≤ x ≤ 4·1018).
Вывести количество единиц в двоичной записи числа x.
9
2
Точки с целочисленными координатами из 1-го квадранта помечаются числами 0,1,2,... слева направо и снизу вверх таким образом, что очередной точке приписывается минимальное число, отсутствующее в вертикали и горизонтали, проходящей через точку. Первой помечается точка (0,0).
То есть допустим мы хотим пометить точку (i, j). Это значит, что все точки, находящиеся ниже и левее относительно нее уже помечены. Тогда рассмотрим набор из чисел в i-ом столбце и j-ом столбце (вместе). Отметкой точки (i, j) будет минимальное неотрицательное число, которое не содержится в этом наборе.
Написать программу, которая
В первой строке даются два числа x и y для первой части задачи (0 ≤ x, y ≤ 109). Во второй строке даются два числа x и c для второй части задачи (0 ≤ x ≤ 109, 0 ≤ c ≤ 2·109)
Выведите два числа. В первой строке выведите ответ на первую часть задачи, а во второй — на вторую.
3 4
5 23
7
18