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

Задача . All Pairs Similarity


Задача

Темы:

**Замечание: Ограничение по памяти для этой задачи 512MB, в два раза больше чем по умолчанию.**

Каждой из \(N\) (\(1\le N\le 5\cdot 10^5\)) коров Фермера Джона назначена ненулевая битовая строка длиной \(K\) (\(1\le K\le 20\)). Различным коровам может быть назначена одинаковая битовая строка.

Сходство Жаккара двух битовых строк определяется как количество (?единичных) битов в их пересечении, делённое на количество (?единичных) битов в их объединении. Например, сходство Жаккара битовых строк \(\texttt{11001}\) и \(\texttt{11010}\) равно \(2/4\).

Для каждой коровы выведите сумму сходств Жаккара её с битовыми строками всех других коров, включая её саму, по модулю \(10^9+7\). Точнее если сумма равна рациональному числу \(a/b\), где \(a\) и \(b\) целые числа, не имеющие общих делителей, выведите уникальное целое число \(x\) в интервале \([0,10^9+7)\) такое, что \(bx-a\) делится на \(10^9+7\).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(N\) и \(K\).

Каждая из следующих \(N\) строк содержит целое число \(i\in (0,2^K)\), представляющее корову, ассоциированную с \(K\)-битовым представлением числа \(i\).

ФОРМАТ ВЫВОДА (на экран / stdin):

Выведите сумму по модулю \(10^9+7\) для каждой коровы на отдельной строке.


Примеры
Входные данныеВыходные данные
1 4 2
1
1
2
3
500000006
500000006
500000005
500000006

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

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