G - Special Permutation CodeForces - 1352G

    技术2025-02-16  19

    A permutation of length nn is an array p=[p1,p2,…,pn]p=[p1,p2,…,pn], which contains every integer from 11 to nn (inclusive) and, moreover, each number appears exactly once. For example, p=[3,1,4,2,5]p=[3,1,4,2,5] is a permutation of length 55. For a given number nn (n≥2n≥2), find a permutation pp in which absolute difference (that is, the absolute value of difference) of any two neighboring (adjacent) elements is between 22 and 44, inclusive. Formally, find such permutation pp that 2≤|pi−pi+1|≤42≤|pi−pi+1|≤4 for each ii (1≤i<n1≤i<n). Print any such permutation for the given integer nn or determine that it does not exist. Input The first line contains an integer tt (1≤t≤1001≤t≤100) — the number of test cases in the input. Then tt test cases follow.Each test case is described by a single line containing an integer nn (2≤n≤10002≤n≤1000). Output Print tt 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. Example Input 6 10 2 4 6 7 13 Output 9 6 10 8 4 7 3 1 5 2 -1 3 1 4 2 5 3 6 2 4 1 5 1 3 6 2 4 7 13 9 7 11 8 4 1 3 5 2 6 10 12

    #include<stdio.h> int main() { int n; int t; int i, j; int x[10000], h; scanf("%d", &t); for (i = 0; i < t; i++) { scanf("%d", &n); if (n==2||n==3) { printf("-1\n"); continue; } if (n==4) { printf("2 4 1 3\n"); continue; } for ( j = 1; j <= n/2; j++) { x[j] = j * 2; } if (n%2==0) { h = x[n / 2-2]; x[n / 2-2] = x[n / 2 - 1]; x[n / 2 - 1] = x[n / 2 ]; x[n / 2 ] = h; } else { x[n / 2] -= 2; x[n / 2 - 1] += 2; } for (j = 1; j <= n / 2; j++) { printf("%d ", x[j]); } if (n%2==1) { for (j = n / 2 + 1; j >= 1; j--) { printf("%d",j*2-1); if (j>1) { printf(" "); } else{ printf("\n"); } } } else { for (j = n / 2 ; j >= 1; j--) { printf("%d", j * 2 - 1); if (j>1) { printf(" "); } else{ printf("\n"); } } } } return 0; }
    Processed: 0.011, SQL: 9