#include <iostream> #include <vector> #include<stdint.h> #include <algorithm> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n,k; int64_t p=1,x=1; int l=0,f=0; cin >> n>>k; if(((n*(n-1))/2)%2==0 ){ if(n==1 and k==1){cout << "TAK" << '\n'<<1<<'\n';} else{ vector <int> v(n); for(int i=0; i<n; i++){ v[i]=i; } for(int i=2; i<=n; i++){ p=p*i; } while(x<p){ l=0; x++; next_permutation(v.begin(), v.end()); for(int i=0; i<n-1; i++){ for(int j=i+1; j<n; j++){ if(v[i]>v[j]){l++;} } } if(l==((n*(n-1))/4)){k--;} if(k==0){ f=1; cout << "TAK"<<'\n'; for(int i=0; i<n; i++){ cout << v[i]+1<<' '; } x=p; } } if(f==0){cout << "NIE"<<'\n';} } } else{cout << "NIE"<<'\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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <iostream> #include <vector> #include<stdint.h> #include <algorithm> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n,k; int64_t p=1,x=1; int l=0,f=0; cin >> n>>k; if(((n*(n-1))/2)%2==0 ){ if(n==1 and k==1){cout << "TAK" << '\n'<<1<<'\n';} else{ vector <int> v(n); for(int i=0; i<n; i++){ v[i]=i; } for(int i=2; i<=n; i++){ p=p*i; } while(x<p){ l=0; x++; next_permutation(v.begin(), v.end()); for(int i=0; i<n-1; i++){ for(int j=i+1; j<n; j++){ if(v[i]>v[j]){l++;} } } if(l==((n*(n-1))/4)){k--;} if(k==0){ f=1; cout << "TAK"<<'\n'; for(int i=0; i<n; i++){ cout << v[i]+1<<' '; } x=p; } } if(f==0){cout << "NIE"<<'\n';} } } else{cout << "NIE"<<'\n';} return 0; } |