#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
int main()
{
srand(time(0));
int n,k;
std::cin>>n>>k;
int arr[n];
for (int i=0; i<n; i++)
{
arr[i] = i+1;
}
int SIZE = sizeof(arr) / sizeof(*arr);
std::random_shuffle(arr, arr + SIZE );
for(int i=0; i<k; i++)
for(int j=0; j<n-1; j++)
if(arr[j]>arr[j+1])
std::swap(arr[j], arr[j+1]);
for (int i = 0; i < SIZE; ++i)
std::cout << arr[i]<<" ";
}
1) Раскрываем пакетик
2) Вываливаем лапшу в тарелку
3) Добавляем специи
4) Завариваем лапшу
Если не следовать алгоритму, то нет смысла его использовать. Например, вначале выполним пункт 2 и 3, а затем 1 и 4. Что у нас получится?
Нарушая пункт 1 мы переходим к пункту 2, но тут проблема, мы не можем вывалить лапшу, ведь мы не открыли пакетик. Здесь идет явное нарушение алгоритма и дальнейшее его использование не валидно.