#include
#include
#include // для std::swap
#include // для INT_MIN
using namespace std;
void selectionSortDescending(vector& arr, int start, int end) {
for (int i = start; i < end; ++i) {
int maxIndex = i;
for (int j = i + 1; j <= end; ++j) {
if (arr[j] > arr[maxIndex]) {
maxIndex = j;
}
}
if (maxIndex != i) {
swap(arr[i], arr[maxIndex]);
}
}
}
int main() {
vector arr = {1, 3, 8, 6, 2, 7, 4, 10, 5};
// Найдем два наибольших четных числа и их индексы
int firstMaxEven = INT_MIN, secondMaxEven = INT_MIN;
int firstIndex = -1, secondIndex = -1;
for (int i = 0; i < arr.size(); ++i) {
if (arr[i] % 2 == 0) {
if (arr[i] > firstMaxEven) {
secondMaxEven = firstMaxEven;
secondIndex = firstIndex;
firstMaxEven = arr[i];
firstIndex = i;
} else if (arr[i] > secondMaxEven) {
secondMaxEven = arr[i];
secondIndex = i;
}
}
}
if (firstIndex == -1 || secondIndex == -1) {
cout << "В массиве недостаточно четных чисел." << endl;
return 1;
}
// Убедимся, что firstIndex меньше secondIndex
if (firstIndex > secondIndex) {
swap(firstIndex, secondIndex);
}
// Упорядочим по убыванию элементы между двумя индексами
if (secondIndex - firstIndex > 1) {
selectionSortDescending(arr, firstIndex + 1, secondIndex - 1);
}
// Выведем результат
for (int num : arr) {
cout << num << " ";
}
cout << endl;
return 0;
}