#include <cstdio> #include <algorithm> int main(){ long long int k; int n; scanf("%d %lld", &n, &k); int t[n]; for(int i=0; i <n; ++i){ t[i]=i+1; } long long int tmp=0; do { long long int sum1=0; for(int i=0; i <n; ++i){ for(int q=i+1; q < n; ++q){ if(t[q]<t[i]){ sum1+=1; } } } long long int sum2=0; for(int i=n-1; i >=0; --i){ for(int q=i-1; q >= 0; --q){ if(t[q]<t[i]){ sum2+=1; } } } if(sum1==sum2){ tmp++; } if(tmp==k) break; } while ( std::next_permutation(t,t+n)); if(tmp==k){ printf("TAK\n"); for(int i=0; i <n; ++i){ printf("%d ", t[i]); } }else{ printf("NIE\n"); } }
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 | #include <cstdio> #include <algorithm> int main(){ long long int k; int n; scanf("%d %lld", &n, &k); int t[n]; for(int i=0; i <n; ++i){ t[i]=i+1; } long long int tmp=0; do { long long int sum1=0; for(int i=0; i <n; ++i){ for(int q=i+1; q < n; ++q){ if(t[q]<t[i]){ sum1+=1; } } } long long int sum2=0; for(int i=n-1; i >=0; --i){ for(int q=i-1; q >= 0; --q){ if(t[q]<t[i]){ sum2+=1; } } } if(sum1==sum2){ tmp++; } if(tmp==k) break; } while ( std::next_permutation(t,t+n)); if(tmp==k){ printf("TAK\n"); for(int i=0; i <n; ++i){ printf("%d ", t[i]); } }else{ printf("NIE\n"); } } |