Problem
Ti viene fornito un array ordinato A di n numeri naturali.
Ci sono q richieste da elaborare. A ciascuna query vengono assegnati due parametri: il tipo t
i e il numero k
i.
Descrizione delle query in base al tipo:
1) Trova in A il numero minimo che non sia minore di k
i.
2) Trova il numero minimo in A strettamente maggiore di k
i.
3) Trova in A il numero massimo che non sia maggiore di k
i.
4) Trova il numero massimo in A che è strettamente minore di k
i.
Per ogni query, riporta il numero trovato o -1 se non esiste.
Inserimento:
La prima riga contiene il numero n (1 <= n <= 10
5) - il numero di elementi dell'array A.
La seconda riga contiene n numeri naturali A
i (1 <= A
i <= 10
9) - gli elementi dell'array stessi. Inoltre, per tutti i < n fatto LA
i <= LA
i+1.
La terza riga contiene il numero q (1 <= q <= 10
5) - il numero di richieste.
Le q righe successive contengono ciascuna due numeri - t
i (1 <= t
i <= 4) e k
i (1 < ;= k
i <= 10
9).
Uscita:
Stampa q righe, i-esimo numero - la risposta all'i-esimo interrogazione.
Esempi:
Input |
Uscita |
4
3 5 5 7
4
15
27
3 2
4 4 |
5
-1
-1
3 |