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

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

숨바꼭질 5

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

요약
수빈이는 매초 X±1로 걷거나 2X로 순간이동하고, 동생은 매초 이동 거리가 1씩 늘어나는 걷기로 이동한다. 수빈이가 동생과 정확히 같은 좌표에 도달하는 최소 시간을 구하거나 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

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

문제

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0≤N≤500,000)N(0 \le N \le 500{,}000)에 있고, 동생은 점 K(0≤K≤500,000)K(0 \le K \le 500{,}000)에 있다.

수빈이는 걷거나 순간이동을 할 수 있다. 수빈이의 위치가 XX일 때 걷는다면 1초 후에 X−1X-1 또는 X+1X+1로 이동하고, 순간이동을 하면 1초 후에 2X2X로 이동한다.

동생은 항상 걷기만 한다. 동생은 매초 이동하며 이동 거리에 가속이 붙는다. 동생이 한 번 이동하는 거리는 이전에 이동한 거리보다 1만큼 크다. 즉, 동생의 처음 위치는 KK이고, 1초 후 위치는 K+1K+1, 2초 후 위치는 K+1+2K+1+2, 3초 후 위치는 K+1+2+3K+1+2+3이다.

수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 동생을 찾는 위치는 정수 좌표여야 하며, 수빈이가 00보다 작은 좌표나 500,000500{,}000보다 큰 좌표로 이동하는 것은 불가능하다.

입력

첫 번째 줄에 수빈이의 위치 NN과 동생의 위치 KK가 주어진다. NN과 KK는 정수이다.

출력

수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 수빈이가 동생을 찾을 수 없거나 찾는 위치가 500,000500{,}000을 넘으면 −1-1을 출력한다.

예제5

  1. 예제 1

    입력
    5 17
    
    예상 출력
    2
    
  2. 예제 2

    입력
    17 5
    
    예상 출력
    4
    
  3. 예제 3

    입력
    6 6
    
    예상 출력
    0
    
  4. 예제 4

    입력
    1 500000
    
    예상 출력
    -1
    
  5. 예제 5

    입력
    250000 499999
    
    예상 출력
    1