IOIOI 카드

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

요약
I/O 카드가 일렬로 놓여 있고 구간 뒤집기 연산마다 비용이 다를 때, 모든 카드를 앞면으로 만들 수 있는지 판정하고 최소 뒤집기 시간을 구한다.
난이도

어려움10점 중 8점

유형
최단 경로, 그래프, 수학, 누적 합
정답자
아직 제출이 없습니다

문제

K 이사장은 점술을 좋아해서 늘 여러 가지 점을 친다. 오늘은 앞면에 'I', 뒷면에 'O'가 적힌 카드를 사용해 올해 IOI에서 일본 선수단이 거둘 성적을 점치기로 했다.

점을 치는 방법은 다음과 같다.

  1. 먼저 양의 정수 A,B,C,D,EA, B, C, D, E를 정한다.
  2. A+B+C+D+EA + B + C + D + E장의 카드를 가로로 한 줄로 늘어놓는다. 이때 왼쪽에서 AA장은 앞면, 이어서 BB장은 뒷면, 이어서 CC장은 앞면, 이어서 DD장은 뒷면, 이어서 EE장은 앞면이 되도록 늘어놓는다. 이렇게 늘어놓으면 왼쪽부터 차례대로 'I'가 AA개, 'O'가 BB개, 'I'가 CC개, 'O'가 DD개, 'I'가 EE개 놓이게 된다.
  3. 미리 정해진 NN종류의 조작 가운데 1개 이상을 골라 원하는 순서로 행한다. 이때 같은 종류의 조작을 2번 이상 행해도 된다. ii (1≤i≤N1 \le i \le N)번째 종류의 조작은 "왼쪽에서 LiL_i번째부터 RiR_i번째까지의 카드 앞뒤를 모두 뒤집는다"는 것이다. 카드 한 장을 뒤집는 데 1초가 걸린다. 따라서 ii번째 종류의 조작을 행하는 데는 Ri−Li+1R_i - L_i + 1초가 걸린다.
  4. 조작이 끝난 뒤 모든 카드가 앞면이면 점은 성공이다.

K 이사장은 필요 이상으로 카드를 뒤집는 일을 피하려고, 카드를 실제로 사용해 점을 치기 전에 먼저 점을 성공시킬 수 있는지부터 구하기로 했다. 나아가 점을 성공시킬 수 있다면 점을 성공시키는 데 걸리는 시간의 최솟값을 구하기로 했다.

카드를 늘어놓는 방법의 정보와 미리 정해진 조작의 정보가 주어진다. 점을 성공시킬 수 있는지 구하고, 가능하다면 점을 성공시키는 데 걸리는 시간의 최솟값을 구하는 프로그램을 작성하라.

입력

표준 입력에서 다음 데이터를 읽는다.

  • 1번째 줄에는 정수 A,B,C,D,EA, B, C, D, E가 공백으로 구분되어 쓰여 있다. 이는 점을 칠 때 처음에 왼쪽에서 AA장은 앞면, 이어서 BB장은 뒷면, 이어서 CC장은 앞면, 이어서 DD장은 뒷면, 이어서 EE장은 앞면이 되도록 카드를 늘어놓는다는 뜻이다.
  • 2번째 줄에는 정수 NN이 쓰여 있다. 이는 미리 정해진 조작이 NN종류 있다는 뜻이다.
  • 이어지는 NN줄 가운데 ii번째 줄 (1≤i≤N1 \le i \le N)에는 정수 Li,RiL_i, R_i가 공백으로 구분되어 쓰여 있다. 이는 ii번째 종류의 조작이 "왼쪽에서 LiL_i번째부터 RiR_i번째까지의 카드 앞뒤를 모두 뒤집는다"는 조작이라는 뜻이다.

출력

점을 성공시킬 수 있으면 점을 성공시키는 데 걸리는 시간의 최솟값을 나타내는 정수를 표준 출력에 1줄로 출력하라. 그렇지 않으면 −1-1을 출력하라.

제한

  • 1≤A≤100 0001 \le A \le 100\,000.
  • 1≤B≤100 0001 \le B \le 100\,000.
  • 1≤C≤100 0001 \le C \le 100\,000.
  • 1≤D≤100 0001 \le D \le 100\,000.
  • 1≤E≤100 0001 \le E \le 100\,000.
  • 1≤N≤100 0001 \le N \le 100\,000.
  • 1≤Li≤Ri≤A+B+C+D+E1 \le L_i \le R_i \le A + B + C + D + E (1≤i≤N1 \le i \le N).

예제2

  1. 예제 1

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

    입력
    1 1 1 1 1
    1
    1 1
    
    예상 출력
    -1