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 Kotlin (1.3.71) (judge verdict: Wrong Answer)

fun main(args: Array<String>) {
    val (a, b, n) = readLine()!!.split(' ').map { it.toLong() }

    fun calc(a: Long, b:Long, x:Long):Long {
        val ad = a.toDouble()
        val bd = b.toDouble()
        val xd = x.toDouble()
        val ret = (Math.floor(ad * xd / bd) - ad * Math.floor(xd / bd)).toLong()
        return ret
    }

    var l = 0L
    var r = n
    var m = ((l-1)+(r+1))/2
    var max = Math.max(calc(a,b,l),calc(a,b,r))
    while (r-l > 1) {
        val ll = calc(a,b,l)
        val lll = calc(a,b,(l+m)/2)
        val rr = calc(a,b,r)
        val rrr = calc(a,b,(m+r)/2)
        max = Math.max(max, Math.max(Math.max(ll,rr), Math.max(lll,rrr)))
        if (lll > rrr) {
            r = m
        } else if (ll <= rr) {
            l = m
        }
        m = (l+r)/2
    }
    println(max)
}