Количество операций Имя входного файла: input.txt Имя выходного файла: output.txt Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайта Дана программа сортировки. Требуется узнать, сколько раз при сортировке конкретного массива с помощью этой программы выполняется операция сравнения двух элементов массива (строка if (a[j] < a[g]) g = j;). #include <iostream> using namespace std; const int nmax = 1000; int a[nmax + 1], n, i, j, g; int main() { freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout); //Чтение входных данных cin >> n; for (i = 1; i <= n; i++) cin >> a[i]; //Сортировка массива for (i = 1; i <= n; i++) { //Считаем, что самое маленькое число, //которое нам встретилось, стоит на месте i g = i; //Перебираем все числа с i+1 до конца массива //Если нашли число, которое меньше, //чем то, что уже найдено, запоминаем его for (j = i + 1; j <= n; j++) if (a[j] < a[g]) g = j; //Меняем местами числа, стоящие на i-ом и //на g-ом местах //Если a[i]=x, a[g]=y, то после выполнения //команды: //a[i]=x+y, a[g]=y //a[i]=x+y, a[g]=(x+y)-y=x //a[i]=(x+y)-x=y if (i != g) { a[i]=a[i]+a[g]; a[g]=a[i]-a[g]; a[i]=a[i]-a[g]; } //То есть после этого a[i]=y, a[g]=x //обмен значений произошел } //Выводим результат for (i = 1; i <= n; i++) cout << a[i] << " "; return 0; } Входные данные В файле input.txt записан массив в формате (и удовлетворяющий ограничениям) из задачи 136. Выходные данные В файл output.txt ваша программа должна печатать одно число - сколько раз в процессе сортировки этого массива программой p141.pas выполнится команда сравнения двух элементов массива. Пример входного файла 5 3 1 2 4 2 Пример выходного файла 10
Версия для печати