思路:审题要清晰

先排除特殊情况:

(1)如果 k == 0,即过山车上一个人也没有,由于牛牛必须坐在前面有人或者后面有人的空位置,此时过山车上没有符合牛牛要求的位置,故最少和最多符合他要求的位置都为 0 ;

(2)如果 k == n,即过山车已经坐满,此时已经没有位置了,故最少和最多符合他要求的位置都为 0;

再看一般情况:由于牛牛必须坐在前面有人或者后面有人的空位置,故最少符合他要求的位置为 1 ,主要考虑最多符合他要求的位置,我们可以三个位置分为一组,比如 n = 6,k = 2,最多的情况为 010 010,此时牛牛有 4 个位置可以选择;再比如 n = 8, k = 2,最多的情况为 010 010 00,此时牛牛有 4 个位置可以选择;再比如 n = 4,k = 2,最多的情况为 010 1,此时牛牛有 2 个位置可以选择;由此,当 n >= k3 时,maxn = 2k;否则,maxn = n-k;

#include<iostream>
using namespace std;
int main(){
    long long n,k,min=0,max=0;
    cin>>n>>k;
    if(n==k||k==0);
    else{
        min=1;
        if(n>=3*k){
            max=k*2;
        }
        else{
            max=n-k;
        }
    }
    cout<<min<<" "<<max<<endl;
    return 0;
}