Skip to content
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
tests
Elevators.cpp
README.html
README.md

README.md

Асансьори

Условие

Вие не разбирате от асансьори, така е! Етаж 0 винаги е най-отдолу, но качвайки се нагоре са възможни разклонения. Ако трябва от етаж A да стигнете до етаж B понякога е възможно това да стане директно, но понякога трябва да слезете до етаж C и след това да се качите към B.

Вход

  • От първия ред се чете цяло число N
    • Броя етажи (номерирани са от 0 до N - 1)
  • От втория ред се въвежат N - 1 числа
    • За етажи: 1, 2, 3, ..., N - 1 - кой е етажа директно отдолу
  • От третия ред се въвежда числото Q
  • От следващите Q реда се въвеждат по 2 числа - етажи A и B
    • За всяка двойка трябва да намерите през кой етаж пътя е най-кратък

Изход

  • Да се изведат Q реда - по един за всяка заявка
    • "You are there" - ако A и B са един и същи етаж
    • "Directly" - ако може да се стигне само с едно качване или слизане
    • "Through C" - когато най-прекия път е от A да се слезе на C и след това да се качи към B
      • C е номер на етаж

Ограничения

  • 2 <= N <= 100 000
  • 1 <= Q <= 100 000
  • Лимит за памет: 16MiB
  • Лимит за време: 0.1 секунди

Примери

Вход

7
0 1 1 0 4 4
7
2 3
5 4
3 5
0 2
4 4
4 2
1 3

Изход

Through 1
Directly
Through 0
Directly
You are there
Through 0
Directly

Вход

15
10 4 13 1 0 0 4 1 12 14 10 13 1 0
10
6 5
7 8
6 10
0 5
5 9
8 6
12 5
4 3
14 11
5 6

Изход

Through 0
Through 1
Through 0
Directly
Through 0
Through 0
Through 0
Through 1
Directly
Through 0
You can’t perform that action at this time.