16530: 改卷子
string, http://cs101.openjudge.cn/practice/16530/
闫老师希望将所有学生的卷子按姓名分成两摞,交给两位助教批改。假设每位考生姓名由大写字母组成。 你想出来一个好办法:你给出一个字符串,然后让闫老师将每位同学姓名的每个字母依次与该字符串比较。为了使这个过程更简单,你认为这个字符串应该尽可能的短。 现在有n位学生,请你找出这样一个字符串S,使得学生姓名小于或等于S的有一半,而另一半学生姓名大于S。如果有多个字符串满足最短长度,那么就取字母排序最小的那个字符串。
输入
每组数据以n开始,代表n个学生。(n >= 2 && n <= 1000 && n为偶数)。 接下来n行为学生姓名。每个名字都由大写字母组成,长度小于30个字母。
输出
针对每组数据,一行输出一个符合条件的最短字符串(大写字母)。
样例输入
Sample Input1:
2
LARHONDA
LARSEN
Sample Output1:
LARI
Sample Iutput2:
4
SAM
FRED
JOE
MARGARET
Sample Output2:
K样例输出
Sample Iutput3:
2
A
C
Sample Output3:
A
Sample Iutput4:
2
AYZZ
AZ
Sample Output4:
AYZZ来源: cs10117 Final Exam
python
n = int(input())
words = []
for i in range(n):
words.append(input())
words.sort()
k = n//2
mid, afterMid = words[k-1:k+1]
ok = False
rst = ""
temp = ""
cur = 0
length = len(mid)
while cur < length:
for i in range(26):
rst = temp
rst += chr(i+65)
if mid <= rst <afterMid:
ok = True
break
if ok:
break
temp += mid[cur]
cur += 1
print(rst)