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: Wrong Answer)

#include<bits/stdc++.h>
#define INF 2000000000
#define MOD 1000000007
#define EPS (1e-10)

using namespace std;

int main(int argc, char *argv[]) {
	
	long A,B,N; cin >> A >> B >> N;


	//int M = 0;
	//int tmp = 0;

	//if (B > N) {
	//	int y = floor((A * N) / B) - A * floor(N / B);
	//	cout << y << endl;
	//}else {
	//	for (int i = 0; i <= N; i++) {
	//		int y = floor((A * N) / B) - A * floor(N / B);
	//		cout << y << endl;
	//		if (M <= y) {
	//			M = y;
	//			tmp = i;
	//		}
	//	}
	//	cout << tmp << " " << M << endl;
	//}
	
	if (B > N) {
		cout << floor((A * B-1) / B)<< endl;
	}else if (B < N){
		cout << floor( (A * N) / B) - A * floor(N / B) << endl;
	}else if (B == N) {
		cout << 0 << endl;	
	}


	return 0;
}