Water Pails

Dado que só dispõe de dois baldes com capacidades de tamanhos x e y, pretende obter uma quantidade total de água nestes dois baldes que seja o mais próxima possível de uma soma-alvo s.
É permitido realizar até k operações das seguintes formas:
  • Encher completamente um dos baldes
  • Esvaziar um dos baldes
  • Despejar o conteúdo de um balde no outro, parando quando o segundo estiver cheio ou o primeiro estiver vazio (o que ocorrer primeiro).
No início, ambos os baldes estão vazios.
Pode não ser possível alcançar exatamente a soma s utilizando os dois baldes. Por isso, é solicitado encontrar a menor diferença |s - s’|, onde s’ corresponde à quantidade total de água nos dois baldes.

Entrada

A única linha de entrada contém 4 inteiros x, y (1 ≤ x, y ≤ 100), k (1 ≤ k ≤ 100) e s (1 ≤ s ≤ 200).

Saída

O programa deve imprimir a diferença absoluta mínima possível de obter realizando, no máximo, k operações.

Exemplos

Entrada
Saída
14 50 2 32
18

Explicação

Podem ser realizadas apenas 2 operações. Seguem as possibilidades após 2 operações:
  1. (0, 0) → 0 unidades
  1. (14, 0) → 14 unidades
  1. (0, 50) → 50 unidades
  1. (0, 14) → 14 unidades
  1. (14, 36) → 50 unidades
  1. (14, 50) → 64 unidades
Logo, o valor que fica mais próximo de 32 é 14, resultando numa diferença de 18.
Repare que poderíamos ter obtido 36 esvaziando o primeiro balde a partir de (14, 36), mas isso exigiria 3 passos, e só nos são permitidos no máximo 2.
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue