뒤집기

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

요약
0이 A개, 1이 B개 있을 때 매 턴마다 정확히 K개를 골라 뒤집어서 전부 1로 만드는 최소 턴 수를 구하고, 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
BFS, 수학, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

홍준이는 A개의 0과 B개의 1을 가지고 있다. 목표는 모든 수를 1로 만드는 것이다.

한 번의 턴에서는 정확히 K개의 수를 골라 값을 뒤집는다. 0은 1로, 1은 0으로 바뀐다. 매 턴에는 현재 값이나 이전에 뒤집은 횟수와 관계없이 A+B개의 수 중 임의의 K개를 고를 수 있다.

목표를 달성하기 위해 필요한 턴 수의 최솟값을 구하라. 불가능하면 -1을 출력한다.

입력

첫째 줄에 세 정수 A, B, K가 주어진다.

출력

첫째 줄에 필요한 턴 수의 최솟값을 출력한다. 모든 수를 1로 만들 수 없다면 -1을 출력한다.

제한

  • 0 ≤ A, B ≤ 100,000
  • 1 ≤ K ≤ 100,000

예제7

  1. 예제 1

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

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

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

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

    입력
    100000 100000 578
    
    예상 출력
    174
    
  6. 예제 6

    입력
    0 0 1
    
    예상 출력
    0
    
  7. 예제 7

    입력
    4 44 50
    
    예상 출력
    -1