Есть такое не сложный, мягко говоря, код, нужно его ускорить, ибо не проходит один тест по времени, как видите ввод/ вывод данных я ускорил, как мог, не вдаваясь в getchar() и какие-то совсем долгие конструкции, так как вообще авторы предполагают, что её и с iostream решить возможно. Тут мы вводим целые n и q; далее вводим массив из n элементов, потом следуют q пар чисел a и b, во время каждой из q итераций цикла мы меняем внутри массива элементы с индексами a-1 и b-1 местами и должны вывести является ли массив отсортированным по неубыванию или нет после каждой из замен.
#include <algorithm>
#include <vector>
#include <stdio.h>
using namespace std;
int main() {
int n, q;
scanf("%d%d", &n, &q);
vector <int> list(n), list1(n);
for (int i = 0; i < n; i++) {
scanf("%d", &list[i]);
list1[i] = list[i];
}
sort(list1.begin(), list1.end());
for (int i = 0; i < q; i++) {
int a, b;
scanf("%d%d", &a, &b);
swap(list[a - 1], list[b - 1]);
if (equal(list.begin(), list.end(), list1.begin())) {
printf("Sorted!\n");
}
else {
printf("Unsorted!\n");
}
}
}