Cerința
Se dau N
puncte din plan prin coordonatele lor.
Se mai dau Q
perechi de puncte, diferite de cele date inițial.
Să se verifice, pentru fiecare pereche de puncte (A , B)
dintre cele Q
, dacă există traseu care pornește din A
și ajunge în B
, prin deplasări cu pași de lungime 1
spre Nord
, Vest
, Sud
, Est
și evitând orice punct dintre cele N
date inițial.
Date de intrare
Pe primul rând al fișierului text links.in
se află numerele naturale N
şi Q
, separate prin spațiu. Pe următoarele N
rânduri se află scrise câte două numere naturale, separate prin spațiu, reprezentând coordonatele celor N
puncte date. Pe următoarele Q
rânduri se află scrise câte patru numere naturale, separate prin câte un spațiu, reprezentând coordonatele celor Q
perechi de puncte date pentru verificările cerute.
Date de ieșire
Pe fiecare din primele Q
rânduri ale fișierului de ieșire links.out
va fi scris unul dintre numerele 1
(adevărat) sau 0
(fals), reprezentând răspunsul la verificarea corespunzătoare, după cum există traseu sau nu există traseu între punctele din perechea dată în interogare.
Restricții și precizări
1 ≤ N ≤ 100.000
1 ≤ Q ≤ 10
- Coordonatele tuturor punctelor date sunt, numere naturale nenule mai mici decât
1.000.000.000
- Pentru
30%
din teste coordonatele tuturor punctelor date vor fi numere naturale nenule mai mici decât1000
Exemplu:
links.in
4 2 1 2 2 1 3 2 2 3 1 1 2 2 1 1 1 3
links.out
0 1
Explicație
La punctul (1,1)
se poate ajunge doar trecând prin (2,3),(2,1),(1,2),(3,2)
care sunt cele 4
puncte date şi deci trebuie evitate. Deci nu se poate ajunge de la (1,1)
la (2,2)
.Răspunsul corect este 0
.
De la (1,1)
la (1,3)
se poate ajunge pe traseul: (1,1), (0,1), (0,2), (0,3), (1,3)
. Răspunsul corect este 1
.