#include <iostream>
using namespace std;

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    if(k <= 0 || n <= 0 || k > n){//排除掉的边界值
        cout << 0;
    }
    else if(n == 1){
        cout << m;
    }
    else{
        int left = k - 1;
        int right = n - k;//左右的坐标,默认到中间依次拿本身的数
        cout << min(left, right) + 1;
    }
    return 0;
}

第一步永远是除去边界值,随后判断特殊情况就是两边没人的时候。最后这个判断有点难,我看别人的题解勉强看懂了一点,就是默认从两边到所在的K处,每移动一个人都+1,初始值就是边界上都是1,往后两边依次+1,由条件限制,不能多超过两个及以上,所以就算左右到边界最小的值,以此为两边的最大值,然后根据题意这个最大值+1即为最后的结果