Решение задачи №174 «Свадьба» с ACMP





Решение задачи №174 «Свадьба» с ACMP

Условие задачи

Одна предприимчивая и очень симпатичная дамочка с прелестнейшим именем Горгона решила заработать себе денег на роскошную жизнь. N молодых людей так влюблены в нее, что предложили руку и сердце. К несчастью для них, Горгона видит в них только мешок с деньгами. Она планирует выйти замуж и почти сразу же развестись с некоторыми из молодых людей ради денежной выгоды. Все, что ей нужно, это подзаработать как можно больше денег (и уж, конечно, остаться незамужней). По законам этой прекрасной страны при разводе каждый из супругов получает половину всего имущества.

Вы планируете опубликовать статью, в которой опишете всю подлость и меркантильность этой особы. Для того чтобы статья получилась особенно красочной, нужно указать максимальную сумму денег, которую сможет получить Горгона.

Входные данные
В первой строке входного файла INPUT.TXT записано целое число N — количество молодых людей, без памяти влюбленных в Горгону (1 < N ≤ 40). Далее следует N чисел — сумма денег на счету каждого молодого человека. В последней строке записано целое число А — сумма денег на счету Горгоны. Суммы денег на счету — целые неотрицательные числа, не превосходящие 109.

Выходные данные
В выходной файл OUTPUT.TXT выведите единственное число — максимальную сумму денег, которой сможет обладать Горгона после своей махинации. Ответ выводите в формате с фиксированной точкой с ровно шестью знаками после десятичной точки.

#include<iostream>
#include<iomanip>
using namespace std;
void InsertSort(int a[],int n)
{
int i,j,k;
for(i=1;i<n;i++)
{
j=i;k=a[i];
while(j&&k<a[j-1])
{
a[j]=a[j-1];j--;}
a[j]=k;
}
}
main ()
{
int a[1000],i,k,g;
double s;
cin>>k;
for(i=0;i<k;i++)
{
cin>>a[i];
}
InsertSort(a,k);
cin>>s;
for(i=0;i<k;i++)
if(s<a[i])s=(s+a[i])/2;
cout<<fixed<<setprecision(6)<<s;

}



Условия задач взяты с сайта acmp.ru