우유통

크기가 X와 Y인 두 통을 K번까지 채우고 비우고 부어 합한 양을 M에 최대한 가깝게 만듭니다.

보통4BFS시뮬레이션면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

농부 존은 우유 정확히 MM단위 (1M2001 \le M \le 200) 주문을 받았고, 지금 바로 채워야 한다. 그런데 착유기가 방금 고장 나서 손에 남은 것은 크기가 정수 XXYY (1X,Y1001 \le X, Y \le 100)인 우유통 두 개뿐이다. 두 통은 처음에 모두 비어 있다. 존은 이 두 통으로 다음 연산을 최대 KK번 (1K1001 \le K \le 100) 수행할 수 있다.

  • 통 하나를 끝까지 가득 채운다.
  • 통 하나를 비운다.
  • 한 통의 내용물을 다른 통에 붓는다. 붓는 통이 비거나 받는 통이 가득 차면, 둘 중 먼저 일어나는 시점에 멈춘다.

두 통에 담긴 우유의 합이 정확히 MM이 되지 않을 수도 있다. 존이 두 통에 만들 수 있는 총량 MM'에 대해 MM|M - M'|의 최솟값을 구하라.

입력

첫째 줄에 XX, YY, KK, MM이 공백으로 구분되어 주어진다. 입력은 이 한 줄뿐이다.

출력

존이 만들 수 있는 총량과 MM 사이 거리의 최솟값을 출력한다.

힌트

X=14X = 14, Y=50Y = 50, K=2K = 2, M=32M = 32인 경우, 연산을 두 번 해서 두 통에 남길 수 있는 상태는 다음과 같다.

(0, 0) = 0
(14, 0) = 14
(0, 50) = 50
(0, 14) = 14
(14, 36) = 50
(14, 50) = 64

32에 가장 가까운 총량은 14와 50이고, 두 경우 모두 차이가 18이다. (0, 36)을 만들려면 첫 번째 통을 비우는 연산이 한 번 더 필요하다.