Дан массив из N различных натуральных чисел от 1 до N. Сортировка массива по возрастанию «пузырьком» работает следующим образом. Сначала сравниваются первый и второй элемент, и, если первый больше второго, то они меняются местами. Затем та же процедура производится со вторым и третьим элементом, …, с предпоследним и последним. Затем эта процедура снова повторяется с первым и вторым, со вторым и третьим, …, с предпоследним и последним элементами. И так (N−1) раз. Сортировка «с конфеткой» выполняется по тем же правилам, но дополнительно задан список пар чисел, которые не меняются друг с другом ни при каких условиях (в таком случае сортирующий получает конфетку за то, что пропускает соответствующий обмен). Например, наличие в списке пары (4,1) обозначает, что если в какой-то момент рядом окажутся числа 4 и 1, и по алгоритму сортировки их нужно будет поменять местами, то обмена не произойдет, а сортирующий получит конфетку.
Входные данные
4
1 4 2 3
2
4 3
1 2
Выходные данные
1 2 4 3
299
306
Ответы на вопрос:
#include <iostream>
#include <vector>
#include <cmath>
#include <set>
using namespace std;
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
signed main() {
set<pair<int,int>> s;
int n;
cin >> n;
vector<int> a(n);
for(int &i:a)
cin >> i;
int m;
cin >> m;
while(m--){
int x,y;
cin >> x >> y;
s.insert({x,y});
s.insert({y,x});
}
for(int i = 0; i < n; i++)
for(int j = 0; j < n - i - 1; j++)
if(a[j] > a[j+1] && s.find({a[j],a[j+1]}) == s.end())
swap(a[j],a[j+1]);
for(int &i:a)
cout << i << " ";
}
11 1 0 1 0 0 0 1 1 1 1 1 0 11 1 1 1 0 1 1 1 1 . 1 0 0 1 1 1 1 1- 1 1 0 1 1 1 0 1 1 1 1 0 1 - 1 1 0 0 0 1 1 1 1 1 1 0 1 - 1 0 0 1 1 0 0 1 1 1 1 0 1 - 1 1 1 1 0 0 0 1 1 1 1 0 1 - 1 1 1 0 1 1 0 1 1 1 1 0 1 - 1 1 1 0 0 1 0 1 1 1 1 0 1 - 1 1 0 1 0 1 0 1 1 1 1 0 1 - 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 получилось: 1110100012÷1111012 = 111.100111112
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Марося29.10.2021 14:20
-
kiktev30.01.2021 19:51
-
almosya200521.03.2022 02:04
-
marius9514.02.2022 16:44
-
juliatroenko07.09.2021 08:19
-
daniilsemkin0519.02.2022 06:30
-
15gallagher11.05.2022 20:56
-
angel21829.01.2022 22:45
-
karinamill0921.11.2021 02:52
-
Linanamik01.12.2021 13:44
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.