Строка и перестановка | 프로그래밍의 벗 PivotOJ
PivotOJ

Строка и перестановка

시간 제한: 1000ms메모리 제한: 1024MB출처: MOOI 2018-19 quallongBOJ 30723

문제

Вам дана строка s1s2sns_1 s_2 \ldots s_n, состоящая из nn маленьких английских букв. Жюри загадало перестановку p1,p2,,pnp_1, p_2, \ldots, p_n и получило новую строку tt, поставив ii-й символ строки ss на pip_i-ю позицию в строке tt. Вам необходимо найти строку tt.

Для этого вы можете один раз задать вопрос, состоящий из kk выбранных вами пар индексов. Для пары индексов (ai,bi)(a_i, b_i) (1ik1 \leq i \leq k, 1ai<bin1 \leq a_i < b_i \leq n) вы узнаете, верно ли, что pai<pbip_{a_i} < p_{b_i}.

Вы хотите определить искомую строку, спросив про наименьшее количество пар, то есть минимизируя значение числа kk, при условии, что проверяющая программа является адаптивной. Это означает, что ответ к каждому тесту может быть различен в зависимости от того, про какие пары индексов вы спрашиваете. Другими словами, ваше решение должно успешно восстанавливать строку tt для любой возможной перестановки p1,p2,,pnp_1, p_2, \ldots, p_n.

힌트

В первом примере сделан запрос про пару индексов (1,2)(1, 2), в ответ получена строка <<1>>, что означает, что p1<p2p_1 < p_2, и, следовательно, загадана перестановка p=p = <<11 22>>, то есть искомая строка --- <<ab>>.

Во втором примере сделан запрос про пару индексов (1,2)(1, 2), в ответ получена строка <<0>>, это означает, что p1p2p_1 \geq p_2, и, следовательно, загадана перестановка p=p = <<22 11>>, то есть искомая строка --- <<ba>>.

В третьем примере не спрашивается ни про какие пары индексов, а сразу выводится ответ --- строка <<qqq>>.

В четвертом примере была загадана перестановка <<22 33 11>>.

예제

예제 1

입력
ab


1
출력
1
1 2

ab

예제 2

입력
ab


0
출력
1
1 2

ba

예제 3

입력
qqq
출력
0

qqq

예제 4

입력
baa



10
출력
2
1 2
1 3

aba
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.