아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

물 파이프

시간 제한1초메모리 제한128 MB

요약
주어진 길이와 개수의 남북 또는 동서 방향 파이프 조각으로 두 점을 연결하되 90도 회전만 허용할 때 필요한 최소 조각 수를 구한다.
난이도

보통10점 중 6점

유형
BFS, 그래프, 구현, 백트래킹
정답자
아직 제출이 없습니다

문제

이스트오너(Eastowner) 시는 늘 물 부족에 시달려서 새 상수도 파이프를 놓기로 했다. 공사는 양쪽 끝에서 동시에 시작되었고, 마침내 두 구간이 거의 이어졌다. 첫 번째 구간은 점 (x1,y1)(x_1, y_1)에서 끝나고, 두 번째 구간은 점 (x2,y2)(x_2, y_2)에서 끝난다. 남은 파이프 조각은 길이가 제각각인 몇 개뿐이다. 이 지역 기술의 특성상 각 조각은 남북 방향 또는 동서 방향으로만 놓을 수 있고, 두 조각은 일직선으로 이어지거나 90∘90^\circ로 꺾이도록만 연결할 수 있다(즉, 180∘180^\circ로 되꺾는 U자 연결은 허용되지 않는다).

사용할 수 있는 조각의 길이 L1,…,LkL_1, \dots, L_k와 길이가 LiL_i인 조각의 개수 CiC_i가 주어질 때, 점 (x1,y1)(x_1, y_1)과 점 (x2,y2)(x_2, y_2)를 잇는 파이프를 만들거나 불가능함을 판정하여라. 필요한 조각의 최소 개수를 출력한다.

입력

정수 x1 y1 x2 y2 kx_1\ y_1\ x_2\ y_2\ k가 주어지고, 이어서 2k2k개의 정수 L1 L2 … Lk C1 C2 … CkL_1\ L_2\ \dots\ L_k\ C_1\ C_2\ \dots\ C_k가 주어진다. 값들은 공백이나 줄바꿈으로 구분된다.

출력

필요한 조각의 최소 개수를 정수 하나로 출력한다. 연결이 불가능하면 −1-1을 출력한다.

제한

  • 1≤k≤41 \le k \le 4
  • 1≤xi,yi,Li≤10001 \le x_i, y_i, L_i \le 1000
  • 1≤Ci≤101 \le C_i \le 10

예제4

  1. 예제 1

    입력
    20 10 60 50 2 70 30 2 2
    
    예상 출력
    4
    
  2. 예제 2

    입력
    5 5 5 6 1
    2 10
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    1 1 1 1 1 5 3
    
    예상 출력
    0
    
  4. 예제 4

    입력
    1 1 11 1 1 10 5
    
    예상 출력
    1