好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

CodeforcesRound#275(Div.2)CDiversePermutation_html

题目链接:Diverse Permutation



Diverse Permutation

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Permutation p is an ordered set of integers p1,???p2,???...,???pn, consisting of n distinct positive integers not larger than n. We'll denote as nthe length of permutation p1,???p2,???...,???pn.

Your task is to find such permutation p of length n, that the group of numbers |p1?-?p2|,?|p2?-?p3|,?...,?|pn?-?1?-?pn| has exactly k distinct elements.

Input

The single line of the input contains two space-separated positive integers n, k (1?≤?k?

Output

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

Sample test(s)

input

3 2 

output

1 3 2 

input

3 1 

output

1 2 3 

input

5 2 

output

1 3 2 4 5 

Note

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





大致题意:给一个n和k。让找到一种1~n的排列,满足,任意相邻两数之间的差值的绝对值必须为k个不同的值。



解题思路:开始用next_permutation(a, a+n)直接生成排列,然后判断,结果TLE到死。暴力枚举搞不定,那只能构造了。详见代码




AC代码:

#include  #include  #include  #include #include  #include  #include  #include  #include  #include  #include  #include  using namespace std;#define INF 0x7fffffffint a[100005], b[100005];int main(){//     freopen("in.txt","r",stdin);     int n, k, l, f;    while(scanf("%d%d",&n,&k)!=EOF)    {        f = n - k;                         for(int i=1; i 

查看更多关于CodeforcesRound#275(Div.2)CDiversePermutation_html的详细内容...

  阅读:37次