https://codeforces.com/contest/1513/problem/A
시간 1초, 메모리 256MB
input :
output :
조건 :
결국 k개만큼의 큰 수를 자리를 지정하고 그 외의 숫자들을 나열할 수 있는지를 묻는 것이다.
입력해야 하는 수가 1 ~ n까지이니까 k개의 수만큼 짝수 위치에 n에서부터 감소하면서 위치를 지정하고 그 외의 숫자들은 빈 자리에 넣어주는 방식을 사용했다.
결국 peak를 만들려면 자기보다 작은 2개의 수가 필요하다.
그러나, 가지고 있는 수의 개수가 이보다 적으면 불가능이기에 -1을 출력하도록 해야 한다.
(길이 + 1) // 2를 한 것과 k를 비교해서 같거나 k가 크다면 불가능의 경우이다.
import sys
t = int(sys.stdin.readline())
for _ in range(t):
n, k = map(int, sys.stdin.readline().split())
if (n + 1) // 2 <= k:
print(-1)
continue
ans = [0] * n
idx = 1
for i in range(k):
ans[idx] = n
idx += 2
n -= 1
for i in range(len(ans)):
if ans[i] == 0:
ans[i] = n
n -= 1
print(*ans)