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 <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef unsigned long long int ull;
typedef long long int ll;
typedef long double ld;

int compare_base(const void *b, const void *f) {
  return (*(ull *)f - *(ull *)b);
}

int main(void) {
  int scan; // scanf result
  ull a; // to input 
  ull b; // to input 
  ull n; // to input 
  ull *answer;

  scan = scanf("%llu", &a);
  scan = scanf("%llu", &b);
  scan = scanf("%llu", &n);

  answer = (ull *)malloc(sizeof(ull) * (n + 1));
  for (ull i = 0 ; i <= n; i++) {
    answer[i] = (ull)floor((double)((a * i) / b)) - a * (ull)floor((double)(i / b));
  }

  qsort(answer, (n + 1), sizeof(ull), compare_base);
  printf("%llu", answer[0]);
  return (0);
}