Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) 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 nand 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 5were inhabited. In this case all other apartments: 2, 4 and 6 are good.

题意:我们抽象一点

0代表没有住人,1表示住人,我们有0附近至少有一个住人价值为1

1 1 1 0 0 0 价值为1, 1 0 1 0 1 0 价值为3

问最少和最多

解法:

1 先把不存在的情况讨论一下

2 很明显最少为1

0.....010..... 中,1可以充当两个

而样列也给出一种n-m的情况,于是我们求它们之间的最小

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n,m;
 5     cin>>n>>m;
 6     if(n==m||m==0){
 7         cout<<"0 0"<<endl;
 8     }else{
 9         cout<<"1 "<<min(m*2,n-m)<<endl;
10     }
11     return 0;
12 }

 

posted @ 2017-09-07 12:50  樱花落舞  阅读(248)  评论(0编辑  收藏  举报