Problem5335--构造字符串

5335: 构造字符串

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

给定若干个小写英文字母,请你用这些英文字母组成 nnn 个字符串,字符串可以是空串。要求这 nnn 个字符串的最长公共前缀最长。求出这个最长的长度。
所有字母都要用完,且每个字母只能用在一个字符串里。
前缀 是指一个字符串从第一个字符开始的连续若干个字符组成的字符串。前缀可以为空串。比如字符串"aab"的前缀有四个,分别是"","a","aa","aab"
我们说一个字符串 sss 是某些串的 公共前缀,当且仅当这个串是每个字符串的 前缀
每一个 公共前缀 都是一个字符串,是字符串就有长度。当 nnn 个串都确定下来的时候,这 nnn 个串的所有 公共前缀 也就确定下来了,而且可以证明 公共前缀 的数目是有限的,在这有限个 公共前缀 中,有一个 公共前缀 的长度是最长的,这个前缀就是 最长公共前缀
举个例子,假设现在有三个串:
abbc
abbde
abbe
这个三个串的最长公共前缀是"abb",长度为 333
再举个例子,假设现在有四个串:
abbd
bbd
abbd
abb
那么这四个串的最长公共前缀是"",长度为 000

Input

输入共有两行
第一行是一个整数 nnn ,表示字符串的数量
第二行包含 262626 个非负整数。从前往后依次表示你拥有字母 aaa 的数目,字母 bbb 的数目,.........,字母 zzz 的数目。

Output

输出一个非负整数,表示答案。

Sample 1 Input

2
3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Sample 1 Output

2

HINT

【样例说明】
在样例中,你拥有 3 个字母 a 和 3 个字母 b,可以构造这样的两个串:"aba", "abb",这样最长公共前缀的长度是 2。可以证明不存在更优秀的方案。
【样例 2】
【输入】
2
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
【输出】
0
【样例说明】
在第二个样例中,你拥有 1 个字母 a 和 1 个字母 b,无论如何构造两个串,都无法产生非空的公共前缀,因此答案是 0。
【数据规模】
$2≤n≤10^9$
每种字母的个数也不超过$10^9$。

Source/Category

C++语法 1.4.循环结构