Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Zapytania do tablicy
(zapytania-tab)
Memory limit: 64 MB
Time limit: 25.00 s

Dany jest ciąg liczb naturalnych Ai oraz dużo zapytań postaci: dla podanej pary (x,y) jak daleko od siebie oddalone są najbliższe wystąpienia liczb x oraz y w tablicy. Dokładniej, niech Sx = {i : Ai = x} oraz Sy = {i : Ai = y}, wtedy celem zapytania jest odpowiedzieć na pytanie o min {|ij| : i ∈ Sx ∧ j ∈ Sy}. Czy potrafisz szybko odpowiedzieć na tego typu zapytania?

Napisz program, który: wczyta ciąg i zapytania, wyznaczy odpowiedzi dla wszystkich zapytań i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, określająca liczbę elementów ciągu. W drugim wierszu wejścia znajduje się N liczb naturalnych Ai pooddzielanych pojedynczymi odstępami. Są to kolejne elementy ciągu, o którym mowa powyżej.

W trzecim wierszu wejścia znajduje się jedna liczba naturalna Q, określająca liczbę zapytań. W kolejnych Q wierszach znajduje się opis kolejnych zapytań, po jednym w wierszu. Opis każdego zapytania składa się z dwóch liczb naturalnych xi oraz yi oznaczających zapytanie (xi,yi) o odległość najbliższych wystąpień liczb xi oraz yi w ciągu A.

Wyjście

Twój program powinien wypisać na wyjście dokładnie Q wierszy. W i-tym wierszu powinna się znaleźć odpowiedź dla i-tego zapytania: odległość pomiędzy dwoma najbliższymi wystąpieniami liczb xi oraz yi w ciągu A. Jeśli taka para w ogóle nie występuje w ciągu, zamiast tego należy wypisać tylko jedno słowo NIE.

Ograniczenia

1 ≤ N ≤ 100 000, 1 ≤ Q ≤ 1 000 000, 1 ≤ Ai ≤ 109, 1 ≤ xi, yi ≤ 109.

Przykład

Input Output
7
2 1 5 2 4 1 4
4
2 5
1 2
7 1
5 4
1
1
NIE
2