#include <iostream> #include <algorithm> int ileInwersji(int n, int tab[]){ int licznik=0; for (int i=0; i<n; i++) { for (int j=0; j<i; j++) { if (tab[j]>tab[i]) { licznik++; } } } return licznik; } void kopiujNaOdwrot(int tab1[], int tab2[], int n){ for (int i=0; i<n; i++) { tab2[n-i-1]=tab1[i]; } } bool czyTabliceRowne(int tab1[], int tab2[], int n){ for (int i=0; i<n; i++) { if (tab1[i]!=tab2[i]) { return false; } } return true; } int main(int argc, const char * argv[]) { using namespace std; int n,k; cin >> n; cin >> k; int odwroconaTablica[n]; int tab[n], pocz[n]; for (int i=0; i<n; i++) { tab[i]=i+1; pocz[i]=i+1; } bool czy = true; while (k>0 && czy) { kopiujNaOdwrot(tab, odwroconaTablica, n); if (ileInwersji(n, tab)==ileInwersji(n, odwroconaTablica)) { k--; } if(k>0) next_permutation(tab, tab+n); if (czyTabliceRowne(pocz,tab,n)) { czy=false; } } if (k==0) { cout<<"TAK\n"; for (int i=0; i<n; i++) { cout<<tab[i] << " "; } } else{ cout<<"NIE"; } 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include <iostream> #include <algorithm> int ileInwersji(int n, int tab[]){ int licznik=0; for (int i=0; i<n; i++) { for (int j=0; j<i; j++) { if (tab[j]>tab[i]) { licznik++; } } } return licznik; } void kopiujNaOdwrot(int tab1[], int tab2[], int n){ for (int i=0; i<n; i++) { tab2[n-i-1]=tab1[i]; } } bool czyTabliceRowne(int tab1[], int tab2[], int n){ for (int i=0; i<n; i++) { if (tab1[i]!=tab2[i]) { return false; } } return true; } int main(int argc, const char * argv[]) { using namespace std; int n,k; cin >> n; cin >> k; int odwroconaTablica[n]; int tab[n], pocz[n]; for (int i=0; i<n; i++) { tab[i]=i+1; pocz[i]=i+1; } bool czy = true; while (k>0 && czy) { kopiujNaOdwrot(tab, odwroconaTablica, n); if (ileInwersji(n, tab)==ileInwersji(n, odwroconaTablica)) { k--; } if(k>0) next_permutation(tab, tab+n); if (czyTabliceRowne(pocz,tab,n)) { czy=false; } } if (k==0) { cout<<"TAK\n"; for (int i=0; i<n; i++) { cout<<tab[i] << " "; } } else{ cout<<"NIE"; } return 0; } |