CodeChef submission 600835 (C++ 4.3.2) plaintext list. Status: AC, problem SEQUENCE, contest . By kamranmaharov (kamranmaharov), 2011-07-17 15:19:55.
#include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib> #include <cstring> #include <string> #include <vector> #include <queue> #include <stack> #include <set> #include <map> #include <cmath> #pragma comment(linker,"/STACK:16777216") #define inf 1000000000 #define MP make_pair using namespace std; typedef long long L; typedef unsigned long long UL; vector<int> A[17]; int t,n,a,b; int main() { A[1].push_back(1); A[1].push_back(2); for(int i=2;i<=15;i++){ for(int j=0;j<A[i-1].size()-1;j++) A[i].push_back(A[i-1][j]); A[i].push_back(i); for(int j=A[i-1].size()-2;j>=0;j--) A[i].push_back(A[i-1][j]); A[i].push_back(i); } cin>>t; while(t--){ cin>>n>>a>>b; int bit=-1,idx=-1,type=2; for(int i=0;i<n&&(bit==-1);i++) if((a^b)==(1<<i))bit=i; if(bit!=-1){ for(int i=1;i<A[n].size()&&(idx==-1);i++){ if((A[n][i]-1)!=bit&&(A[n][i-1]-1)!=bit){ idx=i; type=1; } else if((n-A[n][i])!=bit&&(n-A[n][i-1])!=bit){ idx=i; type=0; } } if(idx==-1&&(A[n][0]-1)!=bit&&((A[n][A[n].size()-1]-1)!=bit)){idx=0;type=1;} else if(idx==-1&&(n-A[n][0])!=bit&&(n-A[n][A[n].size()-1])!=bit){idx=0;type=0;} } if(bit!=-1&&idx==-1)cout<<-1<<endl; else{ if(idx==-1)idx=0; int i=idx; do{ cout<<a; if(type)a=a^(1<<(A[n][i]-1)); else a=a^(1<<(n-A[n][i])); i++; if(i==A[n].size())i=0; if(i!=idx)cout<<" "; }while(i!=idx); cout<<endl; } } return 0; }
Comments

