Задача: А291а
Условие:
Даны действительные числа [latex]a_{1},\ldots,a_{30}.[/latex] Получить [latex]\max (a_{1}+ a_{30},a_{2}+a_{29},\ldots,a_{15}+a_{n}).[/latex]
Тесты:
| № | Входные данные | Выходные данные | 
| 1 | 2 3 5 4 | 8 | 
| 2 | 2 3 7 5 4 | 14 | 
| 3 | 4.5 1.1 3 9.25 0.75 | 10.35 | 
| 4 | -4.5 -2 0 -7.1 5 | 0.5 | 
Код программы:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; bool f(double a, double b){ //Вспомогательная функция для сортировки вектора по убыванию     return a>b; } int main() {     vector<double> real;     double value;     while(cin >> value){         real.push_back(value);     }     int size = real.size();     int size_of_sum = ceil(size%2==0?size/2:size/2+1); //Размер вектора сумм     vector<double> sum;     for(int i = 0; i < size_of_sum; i++){         if(i == size_of_sum-1 && size%2 != 0) sum.push_back(2*real[i]);// Средний элемент массива real при нечетном size         else sum.push_back(real[i] + real[size - i - 1]);     }     sort(sum.begin(),sum.end(),f); // Сортировка по убыванию     cout << sum[0];     return 0; } | 
Решение:
После считывания входного потока данных в вектор [latex]real[/latex] вещественных чисел, вычисляем размер вектора [latex]sum[/latex], равный половине количества элементов входного потока с округлением вверх. В случае нечетного количества элементов, последним элементом вектора [latex]sum[/latex] будет центральный элемент вектора [latex]real[/latex] увеличенный в два раза. Далее, после сортировки полученного вектора по убыванию, выводим первый элемент вектора.
Ссылки:
Задачник по программированию С. Абрамова.
Код программы на ideone.com.
 
						
Исправил Ваш оригинальный способ кодирования многоточий и функций в latex.