Fladdermusen | 프로그래밍의 벗 PivotOJ
PivotOJ

Fladdermusen

시간 제한: 2000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2020 — lagerBOJ 20830
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

Fladdermusen Båtman bor i en stor grotta med många andra fladdermöss. Båtman har precis fått ett nytt jobb som den officiella fladdermus-brevbäraren. Detta betyder att Båtman måste leverera brev mellan vissa punkter i grottan.

Grottan är två-dimensionell och rektangulärformad med höjd HH och bredd WW cm. Den är också fylld med totalt NN stycken stalagmiter och stalaktiter.  En stalagmit är en vertikal droppstenformation som växer upp från grottans golv, och en stalaktit är en vertikal droppstenformation som växer ner från grottans tak. Både stalagmiterna och stalaktiterna i grottan är oändligt tunna, men går inte att flyga igenom.

Båtman har fått en lista på QQ stycken brev som måste levereras. Varje brev måste hämtas upp från en punkt i grottan och levereras till en annan punkt. Båtman undrar nu, för varje brev, hur långt hen måste flyga för att leverera det från startpunkten till ändpunkten, och ber dig om hjälp för att räkna ut detta.

Fladdermöss (inkluderat Båtman) kan endast flyga rakt upp, rakt ner, rakt vänster och rakt höger, men kan byta mellan dessa fyra rikntningar när som helst. (Läsaren kanske känner igen att vi är intresserade av Manhattan-avstånd i det här problemet.) Båtman kan alltså exempelvis flyga 0.4 cm till höger, och sen byta till att flyga 4.3 cm uppåt.

[이미지 1]

Illustration av första exempelfallet. Den prickade linjen visar en möjlig kortaste flygväg av längd 12 för att leverera det första brevet.

입력

Den första raden innehåller fyra heltal N,Q,H,WN,Q,H,W vilket representerar:

  • 1N2000001 \le N\le 200\,000 är totala antalet stalagmiter och stalaktiter.
  • 1Q2000001 \le Q\le 200\,000 är antalet brev Båtman som ska levereras.
  • 1H,W1091 \le H,W\le 10^9 är höjden respective bredden på grottan.

Därefter kommer NN rader som är på någon av följande former:

  • 1xy1\enspace x\enspace y, vilket betyder att det finns en stalagmit som växer upp från punkten (x,0)(x,0) till punkten (x,y)(x,y).
  • 2xy2\enspace x\enspace y, vilket betyder att det finns en stalaktit som växer ner från punkten (x,H)(x,H) till punkten (x,y)(x,y).

Ingen stalagmit/stalaktit når hela vägen från taket till botten, och stalagmiterna/stalaktiterna är all helt inuti grottan, d.v.s.\ 1xi<W1\le x_{i} < W och 1yi<H1\le y_{i} < H.

Därefter kommer QQ rader med fyra heltal x1,y1,x2,y2x_{1},y_{1},x_{2},y_{2} (1x1,x2<W1\le x_{1},x_{2} < W, 1y1,y2<H1\le y_{1},y_{2}< H) vilket representerar att ett brev ska levereras från punkten (x1,y1)(x_{1},y_{1}) till punkten (x2,y2)(x_{2},y_{2}).

Det är garanterat att alla xx-koordinater i indatan är unika.

출력

Ditt program ska skriva ut QQ rader, ett för varje brev. Den ii:e raden ska innehålla ett heltal som är den minsta sträckan Båtman måste flyga för att leverera det ii:e brevet.

예제

예제 1

입력
3 1 5 7
1 2 4
2 3 2
1 5 3
1 2 6 1
출력
12

예제 2

입력
3 3 30 30
1 10 10
1 15 5
2 20 20
5 15 25 15
6 6 4 4
16 1 14 1
출력
20
4
10
코드를 제출하려면 로그인하세요.