codeforces 482 A. Diverse Permutation(构造)

C - C

**Time Limit:**1000MS **Memory Limit:**262144KB 64bit IO Format:%I64d & %I64u

Submit Status

Description

Permutation_p_ is an ordered set of integers _p_1,   p_2,   ...,   p__n, consisting of n distinct positive integers not larger than n. We'll denote as_n the length of permutation _p_1,   _p_2,   ...,   p__n.

Your task is to find such permutation p of length n, that the group of numbers |_p_1 - _p_2|, |_p_2 - _p_3|, ..., |p__n - 1 - p__n| has exactly k distinct elements.

Input

The single line of the input contains two space-separated positive integers n, k (1 ≤ k < n ≤ 105).

Output

Print n integers forming the permutation. If there are multiple answers, print any of them.

Sample Input

Input

3 2

Output

1 3 2

Input

3 1

Output

1 2 3

Input

5 2

Output

1 3 2 4 5

Hint

By |x| we denote the absolute value of number x.

题意是说找到找到一组n个由1..n组成的数列,且每个数字只出现一次

满足每相邻的两项的差的绝对值一共有k种。

找规律即可。不好描述,直接上代码吧。

 1    
 2    /* ***********************************************
 3    Author :111qqz
 4    Created Time :2016年02月22日 星期一 23时36分22秒
 5    File Name :code/cf/problem/482A.cpp
 6    ************************************************ */
 7    
 8    #include <iostream>
 9    #include <algorithm>
10    #include <cstring>
11    #include <cstdio>
12    #include <cmath>
13    using namespace std;
14         int n,k;
15         int tmp,p;
16         const int N=1E5+7;
17         int a[N];
18    
19    int main()
20    {
21    
22         scanf("%d %d",&n,&k);
23         for ( int i = 1; i <= n ; i++ )
24            a[i] = i;
25            tmp = k;
26            p = 1;
27         for ( int i = 2 ; i <= k+1  ; i++)
28         {
29             a[i] = a[i-1] + tmp*p;
30             tmp--;
31             p=p*-1;
32         }
33         for ( int i = 1 ; i < n ; i++ )
34            printf("%d ",a[i]);
35        printf("%d",a[n]);
36    
37        return 0;
38    }
39
40