drei

Time limit: 0.2s Memory limit: 2MB Input: drei.in Output: drei.out

Arheologii au descoperit, printre alte vestigii ale unei civilizaţii dispărute, o reprezentare neobișnuită a numerelor pe care au denumit-o DREI. În reprezentarea DREI apar semne care au fost echivalate de arheologi cu literele mici din alfabetul englez. O reprezentare DREI este un șir de litere distincte care fie constă dintr-o singură literă, fie respectă următoarele două condiţii:

  1. litera maximă apare la unul dintre capete;
  2. şirul obţinut prin eliminarea literei maxime este o reprezentare DREI.

Primele douăsprezece reprezentări, corespunzătoare numerelor 11, 22, 33, 44, 55, 66, 77, 88, 99, 1010, 1111, 1212 sunt a, ab, b, ba, bac, bc, abc, ac, c, ca, cab, cb.

Să notăm cu max(x)\text{max}(x) cea mai mare literă din reprezentarea DREI xx.

Pentru a compara două reprezentări DREI notate cu xx şi respectiv yy aplicăm, în ordine, următoarele reguli:

  1. Dacă max(x)>max(y)\text{max}(x) > \text{max}(y), atunci x>yx > y.
  2. Reprezentarea formată dintr-o singură literă este mai mare decât orice altă reprezentare care are aceeași literă maximă în capătul drept și este mai mică decât orice altă reprezentare care are aceeași literă maximă în capătul stâng.
  3. Dacă ambele reprezentări xx și yy au aceeași literă maximă poziţionată la capătul drept, atunci se elimină litera maximă din ambele reprezentări și se compară reprezentările obţinute (să le notăm xdrx_{dr} și ydry_{dr}). Dacă xdr<ydrx_{dr} < y_{dr}, atunci x>yx > y, respectiv dacă xdr>ydrx_{dr} > y_{dr}, atunci x<yx < y.
  4. Dacă ambele reprezentări xx și yy au aceeași literă maximă poziţionată la capătul stâng, atunci se elimină litera maximă din ambele și se compară reprezentările obţinute (să le notăm cu xstx_{st} şi ysty_{st}). Dacă xst<ystx_{st} < y_{st}, atunci x<yx < y, respectiv dacă xst>ystx_{st} > y_{st}, atunci x>yx > y.

De exemplu:

  • edabc << edc (se aplică mai întâi regula 4, apoi se compară dabc cu dc; se aplică din nou regula 4 şi se compară abc cu c, apoi se aplică regula 2);
  • ab << b << ba, conform regulii 2;
  • abe << caf, conform regulii 1;
  • bac << cba, conform regulii 2;
  • bac << abc (se aplică mai întâi regula 3, apoi se compară ba cu ab, aplicând regula 2).

Cerință

Scrieţi un program care să determine răspunsurile pentru QQ interogări de următoarele 4 tipuri:

Tip interogare Răspuns
1 x1 \ x se afişează 1 dacă şirul xx este o reprezentare DREI, respectiv 0 în caz contrar
2 x y2 \ x \ y se compară reprezentările DREI xx și yy şi se afişează -1 dacă x<yx < y, 0 dacă x=yx = y, respectiv 1 dacă x>yx > y
3 N3 \ N se afişează cea de a NN-a reprezentare DREI
4 x4 \ x se afişează numărul de ordine al reprezentării DREI xx

Date de intrare

Fişierul de intrare drei.in conţine pe prima linie numărul natural QQ reprezentând numărul de interogări.

Pe următoarele QQ linii se află cele QQ interogări, câte o interogare pe o linie, în formatul descris mai sus.

Date de ieșire

Fişierul de ieşire drei.out va conţine QQ linii. Pe linia ii va fi scris răspunsul pentru cea de a ii-a interogare din fișierul de intrare.

Restricții și precizări

  • 1Q1051 \leq Q \leq 10^5
  • 1N10121 \leq N \leq 10^{12}
  • Șirurile de caractere care apar în interogări au lungimea cel mult egală cu 2626.
  • Reprezentările DREI sunt numerotate în ordine crescătoare începând cu 11.
# Punctaj Restricții
1 10 Toate interogările sunt de tip 1
2 13 Toate interogările sunt de tip 2
3 20 Toate interogările sunt de tip 3
4 20 Toate interogările sunt de tip 4
5 12 Șirurile din interogări sau cele obținute ca rezultat al interogărilor de tip 3 conţin cel mult primele 1010 litere din alfabet și Q<10 000Q < 10 \ 000.
6 25 Fără restricții suplimentare

Exemplu

drei.in

6
1 acb
1 abcd
1 xabby
2 bac abc
3 12
4 cb

drei.out

0
1
0
-1
cb
12

Log in or sign up to be able to send submissions!