Problema A - Escadas ou Elevador

A sede das Olimpíadas Nacionais de Informática é um prédio muito alto com exatamente N andares, numerados de 1 a N do mais baixo para o mais alto. Para nos movimentarmos entre andares temos a opção de usar um conjunto de escadas e elevadores. Entre cada par de andares consecutivos existem escadas que demoram exatamente 1 unidade de tempo a serem percorridas (em qualquer sentido).

Há ainda um conjunto de K elevadores. O i-ésimo elevador pode ser usado entre os andares ai e bi, ou seja, podemos entrar neste elevador num andar qualquer entre ai e bi e podemos sair em qualquer andar entre ai e bi. Usar um elevador demora exatamente 1 unidade de tempo, independentemente de quantos andares percorrermos. Podemos ainda considerar que mudar de elevador ou trocar de elevador para escadas é instantâneo, ou seja demora 0 unidades de tempo.

Hoje sabe-se que Q pessoas vão precisar de se movimentar entre andares. A i-ésima pessoa encontra-se no andar ci e quer ir para o andar di e quer fazê-lo no mínimo tempo possível. Determina para cada pessoa o mínimo tempo possível para se deslocar entre cada um dos andares.

Exemplo

Se N = 10, K = 2, Q = 3 e tivermos os seguintes elevadores:

Ou seja, o primeiro elevador desloca-se entre os andares 2 e 5 e o segundo elevador entre os andares 4 e 9, como ilustra a figura seguinte:

Então se tivermos os seguintes pares de andares:

Então os tempos mínimos para cada par são os seguintes:

Restrições:

São garantidos os seguintes limites em todos os casos de teste desta parte que irão ser colocados ao programa:

1 ≤ N ≤ 100 000 Número de andares
1 ≤ K ≤ 100 000 Número de elevadores
1 ≤ Q ≤ 100 000 Número de pessoas

Os casos de teste desta parte do problema estão organizados em 5 grupos com restrições adicionais diferentes:

Grupo Número de Pontos Restrições adicionais
1 15 N, K, Q ≤ 10
2 20 N, K, Q ≤ 100
3 20 K = 2
4 25 ci = 1, ou seja, todos os pares de andares começam no andar 1
5 20
-

Input

A primeira linha contém três inteiros separados por espaços, primeiro N, representando o número de andares, seguido de K o número de elevadores, seguido de Q o número de pessoas.

Seguem-se K linhas, cada uma contendo dois inteiros separados por espaços, a i-ésima contendo ai e bi, representando os andares entre os quais o i-ésimo elevador se consegue movimentar.

Seguem-se Q linhas, cada uma contendo dois inteiros separados por espaços, a i-ésima contendo ci e di, representando os andares entre os quais a i-ésima pessoa se quer movimentar.

É garantido que todos os ai, bi, ci e di são inteiros entre 1 e N.

Output

O output deve conter Q linhas, cada uma com um inteiro onde a i-ésima deve conter o mínimo tempo possível para a i-ésima pessoa se deslocar entre os seus andares.

Input do Exemplo 1

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

Output do Exemplo 1

1
1
4

Explicação do Exemplo 1

Este exemplo corresponde ao exemplo mencionado no enunciado.

Input do Exemplo 2

13 4 5
1 4
6 2
9 12
13 13
1 13
2 7
10 1
5 6
8 8

Output do Exemplo 2

7
2
6
1
0

Final Nacional das ONI'2022
Departamento de Ciência de Computadores
Faculdade de Ciências da Universidade do Porto
(14 de Maio de 2022)