After some thought on where to spend a holiday Vova decided to travel around South China and visit Guangzhou, Shenzhen, Macau and Hong Kong.
Vova heard that South China speaks the Cantonese dialect of the Chinese language. So before setting off he learned several simple phrases in Cantonese. During his first walk around the Guangzhou center Vova said hello to n passers-by
and m of them responded. Vova concluded that the other (n ? m)
passers-by, obviously, spoke the Mandarin dialect of the Chinese language.
After Vova finished his walk, he decided to evaluate M, the number of Guangzhou citizens who speak Cantonese. Wikipedia states that the city‘s population is N people.
Help Vova to find such M, which maximizes the probability that exactly m out of n random
passers-by speak Cantonese.
The single input line contains integers n, m and N (1
≤ n ≤ N ≤ 108; 0 ≤ m ≤ n).
Each of the n passers-by was a Guangzhou citizen and met Vova exactly once during the walk.
Print the required M. If there are multiple values of M maximizing the probability, print the largest of them.
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define ls 2*i
#define rs 2*i+1
#define up(i,x,y) for(i=x;i<=y;i++)
#define down(i,x,y) for(i=x;i>=y;i--)
#define mem(a,x) memset(a,x,sizeof(a))
#define w(a) while(a)
#define LL long long
const double pi = acos(-1.0);
#define Len 200005
#define mod 19999997
const int INF = 0x3f3f3f3f;
LL n,m,N,M;
int main()
{
w(~scanf("%I64d%I64d%I64d",&n,&m,&N))
{
M = (N+1)*m/n;
if(M>N)
M = N;
printf("%I64d\n",M);
}
return 0;
}