Codeforces Round #433 (Div.2 ) B. Maxim Buys an Apartment(水题)

来源:互联网 发布:澳洲商婚 知乎 编辑:程序博客网 时间:2024/05/16 12:13

B. Maxim Buys an Apartment
time limit per test
1 second
memory limit per test
512 megabytes
input
standard input
output
standard output

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 ≤ 1090 ≤ 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 12 and 3 were inhabited. In this case only apartment 4 is good. The maximum possible number could be, for example, if apartments with indices 13 and 5 were inhabited. In this case all other apartments: 24 and 6 are good.


题解:

题意:

n间一排的房子,其中k个房子有人,然后你是个强迫症一定要附近有人才有安全感,问你最少和最多有多少个房子满足你的需求♂

思路:

k==0或者k==n的时候直接输出0 0,否则和k*3做比较,最小的一定是1,因为房子挤成一堆放一边,最大的情况:一个房子周围有2个空位,那么如果房子数小于k*3,直接输出n-k,否则输出2*k,然后这题有个坑点要用long long

代码:

#include<iostream>#include<cstring>#include<stdio.h>#include<math.h>#include<string>#include<stdio.h>#include<queue>#include<stack>#include<map>#include<vector>#include<deque>#include<algorithm>using namespace std;#define INF 100861111#define eps 1e-7#define lson k*2#define rson k*2+1const int maxn=1000005;int main(){    long long i,j,n,k;    scanf("%lld%lld",&n,&k);    if(n==k||k==0)    {        printf("0 0\n");        return 0;    }    if(n<=3*k)    {        printf("1 %lld\n",n-k);        return 0;    }    printf("1 %lld\n",2*k);    return 0;}




阅读全文
0 0
原创粉丝点击