time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
What the cats do when they unite? Right, they have a party. Since they wanted to have as much fun as possible, they invited all their friends. Now n cats are at the party, sitting in a circle and eating soup. The rules are simple: anyone having finished their soup leaves the circle.
Katie suddenly notices that whenever a cat leaves, the place where she was sitting becomes an empty space, which means the circle is divided into smaller continuous groups of cats sitting next to each other. At the moment Katie observes, there are m cats who left the circle. This raises a question for Katie: what is the maximum possible number of groups the circle is divided into at the moment?
Could you help her with this curiosity?
You can see the examples and their descriptions with pictures in the “Note” section.
Input
The only line contains two integers n and m (2≤n≤1000, 0≤m≤n) — the initial number of cats at the party and the number of cats who left the circle at the moment Katie observes, respectively.
Output
Print a single integer — the maximum number of groups of cats at the moment Katie observes.
Examples
input
7 4
output
3
input
`
`6 2
output
2
input
3 0
output
1
input
2 2
outpu
0
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<vector>
#include<queue>
#include<sstream>
#define ll long long
#define mes(x,y) memset(x,y,sizeof(x))
using namespace std;
int main(){
ll n,m;
while(scanf("%lld %lld",&n,&m)!=EOF){
if(m==0||m==1){
cout<<"1"<<endl;
}
else if(n==m||n<m){
cout<<"0"<<endl;
}
else{
ll b=n-n/2;
if(b>m){
cout<<m<<endl;
}
else if(b==m){
cout<<n/2<<endl;
}
else{
n=n-m;
cout<<n<<endl;
}
}
}
}