题目描述:
最小符合要求的永远为0;
最大满足要求的:
当n<3,一定没有满足要求的房子,输出0,
当k小于等于1,一定没有,输出0
当k大于1,小于等于n/2,满足要求的为k-1(两个有人住的房子之间),输出k-1
当k大于n/2,剩下的房间都满足,输出n-k
#include<iostream>
#include<vector>
using namespace std;
int callmax(int n, int k)
{
if (n < 3)
return 0;
if (k <= 1)
return 0;
else if (k <= n / 2)
return k-1;
else if (k <= n)
return n - k;
else
return 0;
}
int main()
{
int num, min=0;
cin >> num;
vector<int>mymax;
for (int i = 0; i < num; i++)
{
int n, k;
cin >> n;
cin >> k;
mymax.push_back(callmax(n, k));
}
for (int i = 0; i < num;i++)
cout << min << " " << mymax[i] << endl;
return 0;
}