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 C++ (GCC 9.2.1) (judge verdict: Runtime Error)

#include <bits/stdc++.h>
using namespace std;

int main() {
  long long int A,B,N;
  cin >> A >> B >> N;
  long long int a,aa;
  a=A/B;
  aa=A%B;

  long long int result1,result2;
  result1 = (A*N)/B;
 if(N+1>B){
    vector <long long int> t(N-B+1);
    for (long long int i=0; i<N-B+1; i++){
      long long  int tmp1,tmp2;
      tmp1 = (B+i)/B;
      tmp2 = (B+i)%B;
      t.at(i)=a* (tmp2-tmp1)*B + a*tmp2 + (aa*tmp2)/B*B;
      cout << i << ":" << t.at (i)<< endl;
    }

    sort(t.begin(), t.end());
    result2 = t.at(N-B);
  }
  cout << (result1 > result2 ? result1:result2)  << endl;

}