Загрузка данных


#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <ctime>

using namespace std;

void shuffleVector(vector<int>& arr) {
    int n = arr.size();
    mt19937 rng(time(0));

    for (int i = n - 1; i > 0; --i) {
        uniform_int_distribution<int> dist(0, i);
        int j = dist(rng);
        swap(arr[i], arr[j]);
    }
}

void myReverse(vector<int>& v, int l, int r) {
    while (l < r) {
        swap(v[l], v[r]);
        l++;
        r--;
    }
}

int main() {
    vector<int> data;
    int n, t, s, var;
    cin >> var;

    if (var == 1) {
        cin >> n;
        for (int i = 1; i <= n; i++) {
            data.push_back(i);
        }
        shuffleVector(data);
        for (int x : data) cout << x << " ";
        cout << endl;
    }

    else if (var == 2) {
        cin >> s >> n;
        for (int i = s; i <= n; i++) {
            data.push_back(i);
        }
        shuffleVector(data);
        for (int x : data) cout << x << " ";
        cout << endl;
    }

    else if (var == 3) {
        cin >> s >> n;

        vector<int> a(n);
        for (int i = 0; i < n; i++) {
            a[i] = i + 1;
        }

        mt19937 rng(time(0));


        for (int i = 0; i < s; i++) {
            uniform_int_distribution<int> dist(i, n - 1);
            int j = dist(rng);
            swap(a[i], a[j]);
        }

        for (int i = s - 1; i > 0; i--) {
            uniform_int_distribution<int> dist(0, i);
            int j = dist(rng);
            swap(a[i], a[j]);
        }

        for (int i = 0; i < s; i++) {
            cout << a[i] << " ";
        }
        cout << endl;
    }

    else if (var == 4) {
        cin >> n;

        vector<int> a(n);
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }

        int i = n - 2;
        while (i >= 0 && a[i] >= a[i + 1]) {
            i--;
        }

        if (i >= 0) {
            int j = n - 1;
            while (a[j] <= a[i]) {
                j--;
            }
            swap(a[i], a[j]);
        }


        myReverse(a, i + 1, n - 1);

        for (int x : a) {
            cout << x << " ";
        }
        cout << endl;
    }

    else {
        cout << "You have selected a non-existent option.";
    }

    return 0;
}