Problem:
Score : 400 points

Problem Statement

Given are integers A, B, and N.

Find the maximum possible value of floor(Ax/B) - A × floor(x/B) for a non-negative integer x not greater than N.

Here floor(t) denotes the greatest integer not greater than the real number t.

Constraints

1 ≤ A ≤ 10^{6}

1 ≤ B ≤ 10^{12}

1 ≤ N ≤ 10^{12}

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B N

Output

Print the maximum possible value of floor(Ax/B) - A × floor(x/B) for a non-negative integer x not greater than N, as an integer.

Sample Input 1

5 7 4

Sample Output 1

2

When x=3, floor(Ax/B)-A×floor(x/B) = floor(15/7) - 5×floor(3/7) = 2. This is the maximum value possible.

Sample Input 2

11 10 9

Sample Output 2

9

Solution in PyPy3 (7.3.0) (judge verdict: Wrong Answer)

#!/usr/bin/env python3

from pprint import pprint
from collections import deque, defaultdict
import sys
import math

sys.setrecursionlimit(10 ** 6)
input = sys.stdin.buffer.readline
INF = float("inf")

a, b, n = map(int, input().split())


def func(x):
    return math.floor(a * x / b) - a * math.floor(x / b)


left = 1
right = n

count = 0
while count < 10000:
    count += 1
    mid_left = left + (right - left) / 3
    mid_right = right - (right - left) / 3
    # print(left, right)
    # print(mid_left, mid_right)
    if func(mid_left) > func(mid_right):
        right = mid_right
    else:
        left = mid_left


ans1 = func(math.floor(left))
ans2 = func(math.ceil(left))
ans3 = func(math.floor(right))
ans4 = func(math.ceil(right))

# print(left, right)
# print(ans1, ans2)

if n == 1:
    print(func(1))
else:
    print(max(ans1, ans2, ans3, ans4))