-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path11.py
35 lines (31 loc) · 949 Bytes
/
11.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import sys
def main():
k = int(input())
kmers = sys.stdin.read().strip().split('\n')
n = len(kmers) + k - 1
prefixes = set()
sufixes = set()
for kmer in kmers:
prefixes.add(kmer[:k - 1])
sufixes.add(kmer[1:])
first_kmer_index = 0
for i, kmer in enumerate(kmers):
if kmer[:k - 1] not in sufixes:
first_kmer_index = i
break
used = [False for _ in kmers]
used[first_kmer_index] = True
res = kmers[first_kmer_index]
while not all(used):
for i, kmer in enumerate(kmers):
if used[i] or kmer[:k - 1] != res[-k + 1:]:
continue
used[i] = True
# check if it's last kmer we should left it until the end
if not all(used) and kmer[1:] not in prefixes:
used[i] = False
continue
res += kmer[-1]
print(res)
if __name__ == '__main__':
main()