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

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

컨베이어 벨트 위의 로봇

면접 대비

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

요약
회전하는 컨베이어 벨트에서 로봇을 싣고 이동시키며 내구도가 0인 칸이 K개 이상이 되는 순간의 단계 번호를 구한다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현, 큐, 배열
정답자
아직 제출이 없습니다

문제

길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돈다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다.

벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 AiA_i이다. 위의 그림에서 1번 칸이 있는 위치를 "올리는 위치", N번 칸이 있는 위치를 "내리는 위치"라고 한다.

컨베이어 벨트에 박스 모양 로봇을 하나씩 올리려고 한다. 로봇은 올리는 위치에만 올릴 수 있다. 언제든지 로봇이 내리는 위치에 도달하면 그 즉시 내린다. 로봇은 컨베이어 벨트 위에서 스스로 이동할 수 있다. 로봇을 올리는 위치에 올리거나 로봇이 어떤 칸으로 이동하면 그 칸의 내구도는 즉시 1만큼 감소한다.

컨베이어 벨트를 이용해 로봇들을 건너편으로 옮기려고 한다. 로봇을 옮기는 과정에서는 아래와 같은 일이 순서대로 일어난다.

  1. 벨트가 각 칸 위에 있는 로봇과 함께 한 칸 회전한다.
  2. 가장 먼저 벨트에 올라간 로봇부터, 벨트가 회전하는 방향으로 한 칸 이동할 수 있다면 이동한다. 만약 이동할 수 없다면 가만히 있는다.
    1. 로봇이 이동하기 위해서는 이동하려는 칸에 로봇이 없으며, 그 칸의 내구도가 1 이상 남아 있어야 한다.
  3. 올리는 위치에 있는 칸의 내구도가 0이 아니면 올리는 위치에 로봇을 올린다.
  4. 내구도가 0인 칸의 개수가 K개 이상이라면 과정을 종료한다. 그렇지 않다면 1번으로 돌아간다.

종료되었을 때 몇 번째 단계가 진행 중이었는지 구해보자. 가장 처음 수행되는 단계는 1번째 단계이다.

입력

첫째 줄에 N, K가 주어진다. 둘째 줄에는 A1,A2,…,A2NA_1, A_2, \dots, A_{2N}이 주어진다.

출력

몇 번째 단계가 진행 중일 때 종료되었는지 출력한다.

제한

  • 2≤N≤1002 \le N \le 100
  • 1≤K≤2N1 \le K \le 2N
  • 1≤Ai≤1,0001 \le A_i \le 1,000

예제4

  1. 예제 1

    입력
    3 2
    1 2 1 2 1 2
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 6
    10 10 10 10 10 10
    
    예상 출력
    31
    
  3. 예제 3

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

    입력
    5 8
    100 99 60 80 30 20 10 89 99 100
    
    예상 출력
    472