Другие языки программирования и технологии

Программирование задач на языке программирования C++.

Дан массив из N различных натуральных чисел от 1 до N. Сортировка массива по возрастанию «пузырьком» работает следующим образом. Сначала сравниваются первый и второй элемент, и, если первый больше второго, то они меняются местами. Затем та же процедура производится со вторым и третьим элементом, …, с предпоследним и последним. Затем эта процедура снова повторяется с первым и вторым, со вторым и третьим, …, с предпоследним и последним элементами. И так (N−1) раз.
Сортировка «с конфеткой» выполняется по тем же правилам, но дополнительно задан список пар чисел, которые не меняются друг с другом ни при каких условиях (в таком случае сортирующий получает конфетку за то, что пропускает соответствующий обмен). Например, наличие в списке пары (4,1) обозначает, что если в какой-то момент рядом окажутся числа 4 и 1, и по алгоритму сортировки их нужно будет поменять местами, то обмена не произойдет, а сортирующий получит конфетку.
Входные данные
4
1 4 2 3
2
4 3
1 2
Выходные данные
1 2 4 3
Тут просто очень, надо сначала создать два массива (в моём случае, динамические), ввести данные, а потом проводить сортировку пузырьком, и если найдется элемент, который больше предыдущего, надо запустить третий вложенный цикл, и проверить, есть ли она в списке неизменяемых, а в зависимости от этого, надо его менять или нет. Вот код программы и вывод:

#include
using namespace std;

int main() {
int n, m;
cin >> n;
int *a = new int [n];
int *b = new int [m*2];
for (int i = 0; i < n; ++i)
cin >> a[i];
cin >> m;
for (int i = 0; i < m*2; ++i)
cin >> b[i];

for (int i = 1; i < n; ++i)
for (int j = 1; j <= n-i; ++j)
if (a[j-1] > a[j]) {
bool flag = true;
for (int k = 0; k < m*2; k += 2)
if ((a[j-1] == b[k] && a[j] == b[k+1]) || (a[j-1] == b[k+1] && a[j] == b[k]))
flag = false;
if (flag)
swap(a[j-1], a[j]);
}

for (int i = 0; i < n; ++i)
cout << a[i] << " ";

delete [] a;
delete [] b;
return 0;
}

PS: Ответы майл. ру не любят форматирование, поэтому, табуляцию расставь сам, подробнее на фото, также в первой строчке кода надо подключить модуль iostream ( он почему то не прогрузился на этом сайте)

ШЛ
Штолинский Леонид
367
Лучший ответ
Добавляешь все пары в сет и затем делаешь обычный бабл сорт с проверкой есть ли нынешняя пара в сете, если да - не трогаем, если нет, то меняем при необходимости
Ferhad Mecidov
Ferhad Mecidov
8 952
Станислав Фёдоров Сет плохо знаю. Если можно, то код