#include <iostream>
#include <vector>
using namespace std;
vector<unsigned long long int> tablica;
void zamien(int pierwsza_liczba, int ile_liczb) {
    for (int i = 0; i < ile_liczb; ++i) {
        iter_swap(tablica.begin() + pierwsza_liczba + i, tablica.begin() + pierwsza_liczba + ile_liczb + i);
    }
}
unsigned long long int karty1;
int potasuj(int karty, unsigned long long int i) {
    if (karty1 == karty) { //pierwsze tasowanie
        zamien(0,karty);
        return potasuj(karty /= 2, i * 2);
    }
    else if (karty == 0) {
        return 0;
    } else {
        for (unsigned long long int j = 0; j < i; ++j) {
            zamien(0 + karty * j, karty); //tasowanie 1 polowy
            zamien(0 + karty * j + karty, karty);//tasowanie 2 polowy 
        }
        return potasuj(karty /= 2, i * 2);
    }
}
int main() {
    std::ios::sync_with_stdio(false);
    unsigned long long int karty, tasowania;
    cin >> karty >> tasowania;
    for (int i = 0; i < karty * 2; ++i) {
        unsigned long long int number;
        cin >> number;
        tablica.push_back(number);
    }
    karty1 = karty;
    for (unsigned long long int i = 0; i < tasowania; ++i) {
        potasuj(karty, 1);
    }
    for (int i = 0; i < karty * 2; ++i) {
        cout << tablica.at(i) <<" ";
    }
    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 | #include <iostream> #include <vector> using namespace std; vector<unsigned long long int> tablica; void zamien(int pierwsza_liczba, int ile_liczb) { for (int i = 0; i < ile_liczb; ++i) { iter_swap(tablica.begin() + pierwsza_liczba + i, tablica.begin() + pierwsza_liczba + ile_liczb + i); } } unsigned long long int karty1; int potasuj(int karty, unsigned long long int i) { if (karty1 == karty) { //pierwsze tasowanie zamien(0,karty); return potasuj(karty /= 2, i * 2); } else if (karty == 0) { return 0; } else { for (unsigned long long int j = 0; j < i; ++j) { zamien(0 + karty * j, karty); //tasowanie 1 polowy zamien(0 + karty * j + karty, karty);//tasowanie 2 polowy } return potasuj(karty /= 2, i * 2); } } int main() { std::ios::sync_with_stdio(false); unsigned long long int karty, tasowania; cin >> karty >> tasowania; for (int i = 0; i < karty * 2; ++i) { unsigned long long int number; cin >> number; tablica.push_back(number); } karty1 = karty; for (unsigned long long int i = 0; i < tasowania; ++i) { potasuj(karty, 1); } for (int i = 0; i < karty * 2; ++i) { cout << tablica.at(i) <<" "; } return 0; } | 
 
            
         English
                    English