#arc044d. [arc044_d]suffix array
[arc044_d]suffix array
問題文
高橋君はsuffix arrayの構築アルゴリズムが大好きです。毎日さまざまなsuffix arrayの構築アルゴリズムを実装して遊んでいます。 しかし、高橋君はsuffix arrayを構築しすぎてしまったので、suffix arrayを構築するのに飽きてしまいました。 そこで高橋君は、与えられた順列に対し、その順列をsuffix arrayに持つような辞書順最小の文字列を求めることにしました。
ただし、つの文字列とに対し、辞書順でとは、以下のいずれか片方の条件を満たすこととします。
- ある整数が存在し、を満たす任意の整数に対してで、かつ
- 任意の整数に対してで、かつ
また、与えられた文字列Sに対し、そのsuffix arrayとは、すべてのiに対して、Sのi文字目から末尾までを順に並べた文字列を列挙し、その文字列たちを辞書順に並び替えた列の各要素に対し、対応するiを順に並べたものです。 たとえば、文字列ABACABAのsuffix arrayは[7,5,1,3,6,2,4]となります。
長さNの順列が与えられるので、その順列をsuffix arrayに持つ英大文字のみからなる辞書順最小の文字列を求めてください。そのような文字列が存在しなければ、代わりに-1を出力してください。
入力
入力は以下の形式で標準入力から与えられる。
- 行目には、整数が与えられる。
- 行目には、整数列が与えられる。これら個の整数はどのつも互いに異なることが保障される。
出力
順列をsuffix arrayに持つ辞書順最小の文字列を出力せよ。
出力の末尾に改行を入れること。(21:40修正)
入力例1
7
7 5 1 3 6 2 4
出力例1
ABACABA
条件を満たす文字列は他にもなどがありますが、辞書順最小のを出力します。
入力例2
12
7 1 9 10 2 4 3 6 12 5 11 8
出力例2
BDEDGFAHCCGG