Positive AND Problem Code: POSAND Codechef Solution

 #include <bits/stdc++.h>
using namespace std;
int main() {  
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  int a[100001],perm[100001];
  perm[1]=2,perm[2]=3,perm[3]=1;
  a[1]=a[3]=1;
  a[2]=-1;
  for(int i=4;i<100001;i++){
    a[i]=1,perm[i]=i;
  }
  int i=4;
  while(i<100000){
    a[i]=-1;
    perm[i+1]^=perm[i];
    perm[i]^=perm[i+1];
    perm[i+1]^=perm[i];
    i<<=1;
  }
  int t;
  cin>>t;
  while(t--){
    int n;
    cin>>n;
    if(a[n]==-1)cout<<-1;
    else{
      if(n==1)cout<<1;
      else{
        for(int i=1;i<n;i++)
          cout<<perm[i]<<' ';
        cout<<perm[n];
      }
    }
    if(t)cout<<'\n';
  }
}

Comments