만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

톱니바퀴 자물쇠

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

요약
톱니바퀴의 크기와 시작 값, 목표 값이 주어질 때 각 톱니바퀴를 목표 값에 맞춰 고정하는 데 걸리는 최소 시간을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

안톤은 컴퓨터 게임을 아주 좋아한다. 얼마 전 Heroes of Keyboard and Mouse라는 새 게임이 나왔고, 그는 바로 구매해서 컴퓨터에 설치했다. 이 게임은 퀘스트 장르라서, 진행하려면 여러 임무(퀘스트)를 차례대로 수행해야 한다.

안톤이 며칠째 붙잡고 있는 퀘스트는 자물쇠를 여는 것이다. 자물쇠는 일렬로 놓인 nn개의 톱니바퀴로 이루어져 있다. ii번째 톱니바퀴에는 sis_i개의 톱니가 있고, 각 톱니에는 0부터 si−1s_i - 1까지의 수가 적혀 있다. 1번 톱니바퀴는 2번과만 맞물려 있고, 2번은 1번과 3번에 맞물려 있다. 3번은 2번과 4번에 맞물려 있으며, 이런 식으로 이어진다. (n−1)(n-1)번은 (n−2)(n-2)번과 nn번에 맞물려 있고, nn번은 (n−1)(n-1)번과만 맞물려 있다.

자물쇠에는 nn개의 창과 nn개의 손잡이가 있다. ii번째 창으로는 ii번째 톱니바퀴의 톱니 중 하나에 적힌 수를 볼 수 있고, ii번째 손잡이로는 ii번째 톱니바퀴를 돌린다. ii번째 톱니바퀴를 시계 방향으로 한 칸 돌리기 전에 ii번째 창에 xx가 보였다면, 돌린 뒤에는 (x+1) mod si(x+1) \bmod s_i가 보인다. 반시계 방향으로 한 칸 돌리면 xx 대신 (x−1+si) mod si(x-1+s_i) \bmod s_i가 보인다. 톱니바퀴를 시계 방향으로 돌리면 맞물린 톱니바퀴는 반시계 방향으로 돌고, 반대로 반시계 방향으로 돌리면 맞물린 톱니바퀴는 시계 방향으로 돈다. 그림 1은 1번 톱니바퀴를 시계 방향으로 돌리기 전과 후의 모습이다. 굵은 선은 창에 보이는 수가 적힌 톱니를 나타낸다.

그림 1. 톱니바퀴의 회전

처음에 ii번째 창에는 aia_i가 보인다. 자물쇠를 열려면 모든 ii번째 창에 bib_i가 보이도록 만들어야 한다.

ii번째 손잡이로 ii번째 톱니바퀴를 돌릴 수 있다. 톱니바퀴를 돌리면 그와 직접 또는 다른 톱니바퀴를 거쳐 연결된 모든 톱니바퀴도 함께 움직인다. 톱니바퀴를 한 칸 돌리는 데 1초가 걸린다. 또한 ii번째 창에 bib_i가 보이는 상태라면, 손잡이를 눌러 톱니바퀴를 눌러 넣을 수 있다. 그러면 ii번째 톱니바퀴는 (i−1)(i-1)번째 및 (i+1)(i+1)번째 톱니바퀴(존재하는 경우)와 더 이상 맞물리지 않는다. 눌러 넣은 톱니바퀴는 그 상태 그대로 영원히 남는다. 손잡이를 눌러 톱니바퀴를 눌러 넣는 데 kk초가 걸린다.

그림 2의 왼쪽은 2번 톱니바퀴를 눌러 넣기 전 상태이고, 오른쪽은 1번을 시계 방향, 3번을 반시계 방향으로 돌린 뒤 2번을 눌러 넣은 상태이다. 2번을 눌러 넣은 뒤에는 1번과 3번이 서로 독립적으로 돈다는 점에 유의한다.

그림 2. 톱니바퀴 눌러 넣기

안톤은 퀘스트를 끝내기 위해 자물쇠를 최대한 빨리 열어야 한다. 톱니바퀴의 정보, 시작 상태, 목표 상태가 주어졌을 때, 안톤이 자물쇠를 열 수 있는 최소 시간을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 두 정수 nn과 kk가 주어진다 (1≤n≤251 \le n \le 25, 1≤k≤1001 \le k \le 100). 둘째 줄에는 톱니바퀴의 크기 s1,s2,…,sns_1, s_2, \ldots, s_n이 주어진다. 모든 sis_i는 3 이상 10 이하의 정수이다.

셋째 줄에는 톱니바퀴의 시작 위치 a1,a2,…,ana_1, a_2, \ldots, a_n이, 넷째 줄에는 목표 위치 b1,b2,…,bnb_1, b_2, \ldots, b_n이 주어진다. 모든 ii에 대해 0≤ai<si0 \le a_i < s_i이고 0≤bi<si0 \le b_i < s_i이다.

출력

자물쇠를 여는 데 필요한 최소 시간을 출력한다.

예제2

  1. 예제 1

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

    입력
    3 2
    3 3 3
    0 0 0
    1 1 1
    
    예상 출력
    5