#P14756. [Bulgarian2019夏季赛]LightBulbs

[Bulgarian2019夏季赛]LightBulbs

题目描述

Eli 的家里有 L 个灯泡。她可以使用 N 个开关来控制这些灯泡,每个开关控制其中的一个子集。

这套电路系统有一个缺陷:如果 Eli 使用某个开关去点亮一个已经亮着的灯泡,那么这个灯泡会烧坏,之后将再也无法被点亮。

不同灯泡对 Eli 的重要程度不同。例如,地下室里的灯一年只会用到一次,就远不如客厅里的灯重要。她已经把灯泡按重要性从高到低排序:第 1 个灯泡最重要,第 2 个次之,……,第 L 个最不重要。

现在 Eli 想通过使用一个或多个开关,使最终亮着的灯泡集合在“重要性”意义下尽可能优。这里不关心有多少不太重要的灯泡烧坏,只关心亮着的灯泡集合的字典序优先级。

对于两个灯泡集合 AB,我们称 AB 更重要,当且仅当在两者不同的灯泡中,最重要的那个亮着的灯泡属于 A

例如,设有 5 个灯泡和 3 个开关:

  • 第 1 个开关控制第 2, 3, 5 个灯泡;
  • 第 2 个开关控制第 1, 3, 4 个灯泡;
  • 第 3 个开关控制第 2, 4, 5 个灯泡。

使用第 2 个开关是有意义的,因为只有它控制最重要的第 1 个灯泡。

如果在此基础上再使用第 1 个开关,则第 3 个灯泡会烧坏,第 2 和第 5 个灯泡亮起。若用 1 表示亮着的灯泡,0 表示未亮或已烧坏的灯泡,并按照灯泡重要性从左到右排列,则结果为:

11011

如果改为使用第 3 个开关,则结果为:

11101

第二种结果更优,因为它们的差异中,最重要的那个灯泡是第 3 个,而它在第二种结果中是亮着的。

如果三个开关全部使用,则结果为:

10000

因为除第 1 个灯泡外,其余每个灯泡都会被至少两个开关点亮,从而烧坏。

请编写程序 Lightbulbs,给定每个开关控制哪些灯泡,求最终能够亮着的、按重要性最优的灯泡集合。

输入格式

第一行输入两个整数 NL,分别表示开关数量和灯泡数量。

接下来 N 行,每行是一个长度为 L 的由 01 组成的字符串,表示对应开关控制哪些灯泡。

输出格式

输出一个长度为 L01 串,表示最终最优的亮灯集合。

数据范围

  • 1 ≤ N ≤ 50
  • 1 ≤ L ≤ 50

样例 1

输入

3 5
01101
10110
01011

输出

11101

样例 2

输入

10 20
00010111011100101010
11110001010110011110
00101010100100000100
11000000111011101000
01100101011001100100
11010010110010000100
01111111011000010001
00001010111010011111
11100011101000011011
10001000011001001111

输出

11111101000011000110