G. Special Permutation

A permutation of length n is an array p=[p1,p2,…,pn], which contains every integer from 1 to n (inclusive) and, moreover, each number appears exactly once. For example, p=[3,1,4,2,5] is a permutation of length 5.

For a given number n (n≥2), find a permutation p in which absolute difference (that is, the absolute value of difference) of any two neighboring (adjacent) elements is between 2 and 4, inclusive. Formally, find such permutation p that 2≤|pi−pi+1|≤4 for each i (1≤i<n).

Print any such permutation for the given integer n or determine that it does not exist.

Input
The first line contains an integer t (1≤t≤100) — the number of test cases in the input. Then t test cases follow.

Each test case is described by a single line containing an integer n (2≤n≤1000).

Output
Print t lines. Print a permutation that meets the given requirements. If there are several such permutations, then print any of them. If no such permutation exists, print -1.

#include<iostream>
#include<stack>
#include<cmath>
#include<set>
#include<cstring>
using namespace std;
typedef long long ll;
int o_n[2001],j_n[2001];
int main()
{
    int n;
    cin>>n;
    while(n--){
        int k;
    o_n[0]=j_n[0]=0;
    scanf("%d",&k);
    for(int i=1;i<=k;i++)
    if(i&1)o_n[++o_n[0]]=i;
    else if(i!=4)j_n[++j_n[0]]=i;
    if(k<4){cout<<-1<<endl;continue;}
    for(int i=j_n[0];i>=1;i--)
        cout<<j_n[i]<<" ";
    cout<<4<<" ";
    for(int i=1;i<=o_n[0];i++)
        cout<<o_n[i]<<" ";
    cout<<endl;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值