#define NDEBUG #include<bits/stdc++.h> using namespace std; #define REP(I,N) for(int I=0;I<(N);I++) #define FOR(I,A,B) for(int I=(A);I<=(B);I++) #define FORD(I,A,B) for(int I=(A);I>=(B);I--) #define PB push_back typedef vector<string> VS; inline VS parse(const string &s,const int rs,const char ch=' '){string a;VS wyn;wyn.reserve(rs);REP(i,(int)s.size()) if(s[i]!=ch) a+=s[i];else if(!a.empty()){wyn.PB(a);a="";} if(!a.empty()) wyn.PB(a);return wyn;} int n,t; int main(){ ios::sync_with_stdio(false); cin>>n>>t; cin.ignore(); n=1<<n; t&=1; string line; line.reserve(12*n); getline(cin,line); if(t){ string ret; ret.reserve(12*n); VS p=parse(line,n); FORD(i,n-1,1){ ret+=p[i]; ret+=" "; } ret+=p[0]+"\n"; cout<<ret; } else{ cout<<line<<"\n"; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #define NDEBUG #include<bits/stdc++.h> using namespace std; #define REP(I,N) for(int I=0;I<(N);I++) #define FOR(I,A,B) for(int I=(A);I<=(B);I++) #define FORD(I,A,B) for(int I=(A);I>=(B);I--) #define PB push_back typedef vector<string> VS; inline VS parse(const string &s,const int rs,const char ch=' '){string a;VS wyn;wyn.reserve(rs);REP(i,(int)s.size()) if(s[i]!=ch) a+=s[i];else if(!a.empty()){wyn.PB(a);a="";} if(!a.empty()) wyn.PB(a);return wyn;} int n,t; int main(){ ios::sync_with_stdio(false); cin>>n>>t; cin.ignore(); n=1<<n; t&=1; string line; line.reserve(12*n); getline(cin,line); if(t){ string ret; ret.reserve(12*n); VS p=parse(line,n); FORD(i,n-1,1){ ret+=p[i]; ret+=" "; } ret+=p[0]+"\n"; cout<<ret; } else{ cout<<line<<"\n"; } return 0; } |