#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"); } } |
English