#genocon2021b. [genocon2021_b]Practice 2

[genocon2021_b]Practice 2

题目描述

sstt 是由 A、C、G、T 组成的字符串。我们用 s\[i\]t\[i\] 来分别表示 sstt 的第 ii 个字符。我们定义以下得分 SsopS_{sop},并通过在适当位置添加空白符号到 sstt 中来使其最大化。注意,添加空白符号后的 sstt 的长度应相同,NN 表示长度。空白符号用 - 来表示。

SsopS_{sop} = sumi=1N\\sum_{i=1}^{N} sim(s\[i\], t\[i\])

sim(x,y)sim(x,y) 是一个用于计算 xxyy 相似性的函数,下表定义了它的输出。

xxyy

A

C

G

T

-

A

1

-3

-3

-3

-5

C

-3

1

-3

-3

-5

G

-3

-3

1

-3

-5

T

-3

-3

-3

1

-5

-

-5

-5

-5

-5

-5

例如,当 ss=CTCGGT 和 tt=CATCC 时,如果在 ss 的第一个字符后面添加 -,并在 tt 的最后一个字符后面连续添加两个 -,SsopS_{sop} 最大化。

SsopS_{sop} = sim(sim(C, C)+sim()+sim(-,A)+sim()+sim(T,T)+sim()+sim(C,C)+sim()+sim(G,C)+sim()+sim(G,-)+sim()+ sim(T,-)=1+(5)+1+1+(3)+(5)+(5)=15) = 1 + (-5) + 1 + 1 + (-3) + (-5) + (-5) = -15

注意:添加空白符号的 sstt 是对齐的,使得许多位置上相同的字符出现在每个字符串的相同位置。

C-TCGGT
CATCC--

我们称此任务为两两对齐,并将其描述为两行字符串。

给定两个字符串,输出它们的两两对齐,并使 SsopS_{sop} 最大化。

约束条件

  • sstt 是由 A、C、G、T 组成的字符串。
  • 10s,t40010 \leq |s|, |t| \leq 400(字符串 xx 的长度用 x|x| 表示)。

输入

输入以以下格式从标准输入给出:

ss tt

输出

打印输入字符串的两两对齐,使 SsopS_{sop} 最大化。在 sstt 中插入 - 之后,

ss 应该打印在第一行,tt 应该打印在第二行。如果有多个使 SsopS_{sop} 最大化的对齐方式,则可以打印任意一种。

只有当满足以下条件时,判题系统才能接受用户的输出: - 如果删除 - ,第一行/第二行与输入的第一行/第二行相等。 - 第一行的长度与第二行的长度相等。


示例输入 1

AGTTGAATTT
GTCGGACTTT

示例输出 1

AGT-TGAATTT
-GTCGGACTTT