В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
Tim4ik0205
Tim4ik0205
10.12.2022 21:40 •  Информатика

С++ Ровно К обменов (Сириус) Даны два числа n и k. Вывести перестановку из n чисел (n чисел от 1 до n без повторений) такую, чтобы сортировка пузырьком по возрастанию на соответствующем массиве сделала ровно k обменов. Если возможных ответов несколько — выведите любой.

Входные данные:
Даны натуральное число n (n≤ 100) и целое неотрицательное k. Гарантируется, что для всех наборов тестовых данных решение существует.

Выходные данные:
Выведите искомую перестановку в одной строке. Числа разделяйте пробелами.


С++ Ровно К обменов (Сириус) Даны два числа n и k. Вывести перестановку из n чисел (n чисел от 1 до

Показать ответ
Ответ:
ddaler
ddaler
09.08.2021 21:33

int n, k;

cin >> n >> k;

int *arr = new int[n];

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

for (int i = 1; i < n && k; ++i) {

for (int j = n - 1; j >= i && k; --j) {

int tmp = arr[j];

arr[j] = arr[j - 1];

arr[j - 1] = tmp;

--k;

}

}

for (int i = 0; i < n; ++i) { cout << arr[i] << ' '; }

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота