Minpath

Time limit: 0.5s Memory limit: 64MB Input: minpath.in Output: minpath.out

Cerință

Se dă un șir de nn numere naturale. Trebuie să scrieți un program care răspunde la interogări de tipul următor: pentru o secvență dată, de lungime putere de 22, identificată prin indicii stst (poziția de început), și drdr (poziția de final) dorim să obținem “traseul minimului”.
Acesta se definește este un șir de intervale obținut astfel:

  • Primul interval din șir este stst, drdr.
  • Dacă minimul se află doar în prima jumătate a sa, indicii de început și de final ai acestei jumătăți reprezintă următorul interval din traseu.
  • Dacă minimul se află doar în a doua jumătate a sa, indicii de început și de final ai acestei jumătăți reprezintă următorul interval din traseu.
  • Dacă minimul se află în ambele jumătăți vom pune în traseu jumătatea cu mai multe apariții ale minimului iar în caz de egalitate, jumătatea din stânga.
  • Se continuă pe traseu până se ajunge la un interval de lungime 11 care conține minimul.

Date de intrare

Fișierul minpath.in conține pe prima linie numărul nn și pe a doua linie cele nn elemente ale șirului dat (în ordinea indicilor, de la 11 la nn).
Pe linia a treia se află numărul de interogări, tt. Pe fiecare din următoarele tt linii se află capetele câte unui interval pentru care avem de aflat traseul minimului.

Date de ieșire

Fișierul minpath.out conține tt linii, pe fiecare dintre ele, fiind un număr par de valori reprezentând traseul minimului pentru întrebarea corespunzătoare din fișierul de intrare, astfel: primele două numere sunt capetele stânga respectiv dreapta ale primului interval (chiar cel dat), următoarele două numere sunt capetele stânga respectiv dreapta ale celui de-al doulea interval, și așa mai departe, ultimele două numere sunt egale și reprezintă capetele ultimului interval, cel de lungime 11.

Restricții și precizări

  • 1n100 0001 \leq n \leq 100 \ 000;
  • Elementele din șirul dat sunt naturale de cel mult nouă cifre.
  • 1t100 0001 \leq t \leq 100 \ 000;
  • Valorile stst și drdr de la interogări respectă condițiile: sunt ambele cuprinse între 11 și nn, drst+1dr-st+1 este un număr putere de 22 și stdrst \leq dr.

Exemplul 1

minpath.in

10
2 1 4 5 2 3 1 6 1 5
2
1 2
2 9

minpath.out

1 2 2 2
2 9 6 9 6 7 7 7

Explicație

Explicație pentru interogarea 2 9:
Secvența dată este:
2 1 4 5 2 3 1 6 1 5 Se afișează indicii de început și de final ai ei, 22 și 99.
Minimul se află în ambele jumătăți, dar de mai multe ori în a doua
2 1 4 5 2 3 1 6 1 5 Se afisează indicii de început și de final ai ei, 66 și 99.
În aceasta minimul se află în ambele jumătăți în mod egal, deci se continuă doar în cea stângă
2 1 4 5 2 3 1 6 1 5 Se afișează capetele ei, 66 și 77.
Minimul se află în dreapta
2 1 4 5 2 3 1 6 1 5 Ajungem la un interval de lungime 11, îi afișăm capetele și ne oprim.

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