线性建筑 喜欢串门的Maxim
https://vjudge.net/contest/352426#problem/B
Maxim wants to buy an apartment in a new house at Line Avenue of Metropolis. The house has n apartments that are numbered from 1 to n and are arranged in a row. Two apartments are adjacent if their indices differ by 1. Some of the apartments can already be inhabited, others are available for sale.
Maxim often visits his neighbors, so apartment is good for him if it is available for sale and there is at least one already inhabited apartment adjacent to it. Maxim knows that there are exactly k already inhabited apartments, but he doesn’t know their indices yet.
Find out what could be the minimum possible and the maximum possible number of apartments that are good for Maxim.
Input
The only line of the input contains two integers: n and k (1 ≤ n ≤ 109, 0 ≤ k ≤ n).
Output
Print the minimum possible and the maximum possible number of apartments good for Maxim.
Example
Input
6 3
Output
1 3
Note
In the sample test, the number of good apartments could be minimum possible if, for example, apartments with indices 1, 2 and 3 were inhabited. In this case only apartment 4 is good. The maximum possible number could be, for example, if apartments with indices 1, 3 and 5 were inhabited. In this case all other apartments: 2, 4 and 6 are good.
线性建筑,插空住人,两个条件 ①有空余 ②旁边有一个或两个住户
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n, k;
scanf("%d%d", &n, &k);
if(k == n || k == 0) //当没有空余或没有住户(不能串门)时,显然没有合适的住处
printf("0 0\n");
else
{
if(k <= n/3) // 只要能住,最差的情况就是只有一间房,最好的情况如下附图,已经入住的住户(圆圈)住得很均匀,两边都能让Maxim 住得开心,而房间总数n,所以要有 k + 2k <= n (有一些房间咋住都没有邻居也没关系)
printf("1 %d\n", 2*k);
else
printf("1 %d\n", n-k); //住户越来越多,余房Maxim都可以开心入住
}
return 0;
}
上一篇: HTML页面style中里面的作用
下一篇: ps利用滤镜及图层样式制作魔幻的放射光
推荐阅读