#include<bits/stdc++.h> #define FOR(i,s,e) for(int i=(s);i<=(e);i++) #define FORD(i,s,e) for(int i=(s);i>=(e);i--) #define ALL(k) (k).begin(),(k).end() #define e1 first #define e2 second #define mp make_pair #define pb push_back #define eb emplace_back using namespace std; typedef long long LL; const bool print = false; const int MAXN = 1000; int t[MAXN]; int zl[MAXN]; main(){ int n,k;scanf("%d%d",&n,&k); FOR(i, 1, n) t[i] = i; int silnia = 1; FOR(i, 1, n) silnia *= i; int zli = 0; while(silnia > 0){ int inversions = 0; int backinversions = 0; FOR(i, 1, n){ FOR(j, i+1, n) if(t[i] < t[j]) backinversions ++; else inversions ++; } if(inversions == backinversions){ /*FOR(i, 1, n) printf("%d ",t[i]); puts(""); zl[t[1]]++;*/ zli++; if(zli == k) { puts("TAK"); FOR(i, 1, n) printf("%d ",t[i]); puts(""); return 0; } } next_permutation(t + 1, t + n + 1); silnia --; } /*FOR(i, 1, n) printf("%d ",zl[i]); puts("");*/ puts("NIE"); }
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 | #include<bits/stdc++.h> #define FOR(i,s,e) for(int i=(s);i<=(e);i++) #define FORD(i,s,e) for(int i=(s);i>=(e);i--) #define ALL(k) (k).begin(),(k).end() #define e1 first #define e2 second #define mp make_pair #define pb push_back #define eb emplace_back using namespace std; typedef long long LL; const bool print = false; const int MAXN = 1000; int t[MAXN]; int zl[MAXN]; main(){ int n,k;scanf("%d%d",&n,&k); FOR(i, 1, n) t[i] = i; int silnia = 1; FOR(i, 1, n) silnia *= i; int zli = 0; while(silnia > 0){ int inversions = 0; int backinversions = 0; FOR(i, 1, n){ FOR(j, i+1, n) if(t[i] < t[j]) backinversions ++; else inversions ++; } if(inversions == backinversions){ /*FOR(i, 1, n) printf("%d ",t[i]); puts(""); zl[t[1]]++;*/ zli++; if(zli == k) { puts("TAK"); FOR(i, 1, n) printf("%d ",t[i]); puts(""); return 0; } } next_permutation(t + 1, t + n + 1); silnia --; } /*FOR(i, 1, n) printf("%d ",zl[i]); puts("");*/ puts("NIE"); } |