LearnToCP
Prijavi se
Navigacija
PočetnaRoad-mapaProblemiO Nama
Teorija
Takmičarsko Znanje
Izbor Radnog Okruženja (IDE)Interaktivni ZadaciOutput-only Zadaci
Osnove
Tvoj Prvi ProgramTipovi podataka, Unos i IzlazC++ sintaksaModuloFunkcijeVektoriMatriceVremenska Složenost Algoritma
Sortiranje
SortiranjeSortiranje PrebrojavanjemRadix Sort
Tehnike Optimizacije
Dva PokazivačaZbir brojeva od 1 do nZbir PrefiksaBinarna PretragaPohlepni AlgoritmiFunkcije Binarne PretrageBinarna Pretraga po RešenjuPodeli, pa Vladaj
Binarni Brojevi
Binarni BrojeviBrojevi u koduOperacije nad BitovimaBitmaske
Matematika
Binarno StepenovanjeProsti BrojeviRastavljanje na proste činioceNZD i NZSEratostenovo SitoModifikovano Sito
Strukture Podataka
Niske (Stringovi)StekRedMapeSkupovi (Set)Red sa PrioritetomKorišćenje Proizvoljnih KriterijumaSegmentna StablaFenvikova StablaSparse TabeleDisjunktni SkupoviSqrt Dekompozicija
Kombinatorika
Pravilo SabiranjaPravilo MnoženjaKombinatorni ObjektiPrincip Uključenja Isključenja
Geometrija
Osnove GeometrijeVektoriVektorski i Skalarni ProizvodLinijePoligoniUgloviTačka u PoligonuRastojanja i Tačke PresekaKonveksni OmotačKrugovi
Rekurzija
PokazivačiRekurzijaGenerisanje Kombinatornih Objekata
Dinamičko Programiranje
O DP-uDP problemiDP nad StablimaDP nad Bitmaskama
Teorija Grafova
GrafoviDFS i BFSNajkraći PuteviStablaTopološko SortiranjeDajkstrin AlgoritamMinimalna Razapinjuća StablaAlgoritmi Najkraćih Puteva
Napredna Teorija Grafova
Dvostruka PovezanostJako Povezane KomponenteBipartitni GrafMaksimalni Protok u GrafuFord-Fulkersonov AlgoritamDualnost Protoka i Minimalnog PresekaTeško-Laka DekompozicijaCentroidna Dekompozicija
Napredne Strukture Podataka
2D i 3D Segmentna StablaLenjo PropagiranjeImplicitna Segmentna StablaPerzistentna Segmentna StablaNajbliži Zajednički PredakTrieBalansirana Binarna Stabla PretrageMoov Algoritam

Rastavljanje ploče

HardProblem #47
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Gledaj smerove u kojima rez putuje, a ne gde se nalazi.

Pravougaona čelična ploča leži ravno na radnom stolu. Donje levo teme joj je u (0,0), a gornje desno u (W,H).

Sekač je ploču presekao na dva dela duž izlomljene linije koja počinje negde na donjoj ivici, luta kroz ploču i završava se negde na gornjoj ivici. Linija nikada ne preseca samu sebe, pa se ploča zaista raspada na tačno dva dela.

Čelik je debeo i težak. Delovi ne mogu da se savijaju i ne mogu da se podignu sa stola - jedino što smeš da uradiš jeste da jedan deo pomeriš po stolu, pravolinijski, u jednom jedinom smeru, koliko god daleko hoćeš. Drugi deo ostaje tamo gde jeste.

Tvoj zadatak je da odlučiš da li dva dela mogu tako da se rastave.

Ulaz

U prvoj liniji ulaza je jedan ceo broj t - broj test primera.

  • U prvoj liniji svakog test primera su tri cela broja W, H i n - širina ploče, njena visina i broj tačaka reza.
  • U svakoj od sledećih n linija su dva cela broja xi​ i yi​ - jedna tačka reza, date redom kojim se ide duž njega.

Prva tačka leži na donjoj ivici (y1​=0), a poslednja na gornjoj (yn​=H). Svaka druga tačka leži strogo unutar ploče. Nikoje dve uzastopne tačke nisu jednake, a rez nikada ne dodiruje niti preseca sam sebe.

Izlaz

Za svaki test primer ispiši u posebnoj liniji YES ako dva dela mogu da se rastave jednim pravolinijskim pomeranjem, a NO ako ne mogu.

Primer

Input
2
5 5 6
3 0
2 2
3 1
3 4
2 3
3 5
5 5 6
3 0
2 1
3 2
2 3
3 4
2 5
Output
NO
YES

Drugi rez je običan cikcak i dva dela se rastave ako jedan od njih pomeriš pravo udesno. Prvi rez se vraća sam na sebe i svaki smer koji bi probao gura jedan deo u drugi.

Ograničenja

1≤t≤10
2≤n≤5⋅104
1≤W,H≤106
0≤xi​≤W
0≤yi​≤H
n1​+n2​+…+nt​≤105


Zadatak je, uz dozvolu, preuzet iz zadatka Rastav translacijom, čiji su autori Društvo matematičara Srbije i Fondacija Petlja.

Pošalji svoje rešenje

Prijavi se da pošalješ rešenje i pratiš svoj napredak.

Prijavi se