fork(1) download
  1. #include <iostream>
  2. #include <iterator>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int main() {
  7. int fb[] = {3, 5, -9, 7, 8, 0, 1, -3, -10}; //Массив
  8. int *fe = fb + sizeof(fb)/sizeof(int); //Конец массива
  9. reverse_iterator<int *> rb(fe), re(fb); //«Перевёрнутый» массив
  10.  
  11. //В конеце помещаем три максимальных элемента в возрастающем порядке:
  12. partial_sort(rb, rb+3, re, greater<int>());
  13. //В начало помещаем два минимальных элемента:
  14. if (fe-fb > 4) partial_sort(fb, fb+2, fe-3);
  15. //Хвост массива исключён из обработки (fe-3), так как частичная сортировка
  16. //не обязана сохранять порядок элементов, идущих после сортированных. Усло-
  17. //вие нужно для того, чтобы функция не упала, когда fb+2 > fe-3 для массива
  18. //из трёх и четырёх элементов.
  19.  
  20. int a(fb[0]), b(fb[1]), c(rb[2]), d(rb[1]), e(rb[0]);
  21.  
  22. cout << "Result: "; //Результирующие числа вотсортированы по возрастанию:
  23. if (a * b * e > c * d * e) cout << a << " " << b << " " << e << endl;
  24. else cout << c << " " << d << " " << e << endl;
  25.  
  26. return 0;
  27. }
  28.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
Result: -10 -9 8