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.
Examples
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.
Solution:
#include <cstring>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <memory.h>
#include <cassert>
using namespace std;
int a[1234567];
int main() {
int n, k;
scanf("%d %d", &n, &k);
a[0] = 1;
int low = 1, high = 1;
for (int i = 1; i <= k; i++) {
if (i % 2 == 1) {
a[i] = ++high;
} else {
a[i] = --low;
}
}
for (int i = k + 1; i < n; i++) {
if (a[k] == low) {
a[i] = a[i - 1] - 1;
} else {
a[i] = a[i - 1] + 1;
}
}
int smallest = a[0];
for (int i = 1; i < n; i++) {
if (a[i] < smallest) {
smallest = a[i];
}
}
for (int i = 0; i < n; i++) {
if (i > 0) printf(" ");
printf("%d", a[i] - smallest + 1);
}
printf("\n");
return 0;
}
Related posts:
Rock Is Push
Wilbur and Swimming Pool
Grid Sort
Tricky Interactor
Finding Power of Factorial Divisor
Boolean Computer
Berland Elections
Wheels
Mirror Box
Fox and Box Accumulation
Kind Anton
Orac and Game of Life
Catalan Numbers
Number of divisors / sum of divisors
Robots protection
Practice
Cow and Message
Playing on Graph
Alyona and a Narrow Fridge
Pillars
Landmarks
Perfect Security
Water Tree
Berland Federalization
Three Blocks Palindrome
Alex and a TV Show
May Holidays
Pavel and Triangles
Orac and Medians
Yura and Developers
Graph Reconstruction
Festival Organization