#include
#include
#include
#include
#define NN 1000000
#define eps 1e-7
int n;
double C;
double a[NN], p[NN];
int h[NN];
int s, t, i, j;
double l, r;
double
get_h (void)
{
assert (s < t);
return a[h[s]];
}
int
pop_h (void)
{
assert (s < t);
return h[s++];
}
void
push_h (int x)
{
while (s < t && a[h[t - 1]] < a[x])
t--;
h[t++] = x;
}
int
main (int argc, char *argv[])
{
double ev, ev1, ev2;
int x;
scanf ("%d%lf", &n, &C);
for (i = 0; i < n - 1; i++)
scanf ("%lf", &a[i]);
for (i = 0; i < n; i++)
p[i] = 0;
s = 0; t = 0;
i = 0; j = 1;
l = C; r = 0;
push_h (0);
// printf('\n');
while (j < n && i < j && l > a[j - 1] + eps)
{
ev1 = (l - r) * (j - i) / (j - i + 1);
if (s < t)
{
ev2 = (l - get_h ()) * (j - i);
ev = (ev1 < ev2) ? ev1 : ev2;
}
else
ev = ev1;
l -= ev / (j - i);
r += ev;
assert (l + eps > r);
if (fabs (l - r) < eps)
{
push_h (j);
j++;
r = 0;
}
if (fabs (l - get_h ()) < eps)
{
x = pop_h ();
for (; i <= x; i++){
p[i] = l;
}
i = x + 1;
}
if ((i == j) || (l < a[j - 1] + eps))
{
for (; i < j; i++){
p[i] = l;
}
l = r;
r = 0;
i = j;
push_h (j);
j++;
}
}
for (; i < j; i++){
p[i] = l;
}
for (i = 0; i < n; i++)
printf ("%0.20lf\n", p[i]);
return 0;
}
197
364
Ответы на вопрос:
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
sofi19005.05.2022 03:54
-
asadbek770324.05.2022 15:09
-
ЛераТян200030.05.2023 19:19
-
bedboy77709.01.2021 11:17
-
гулие24.01.2021 12:27
-
vera18623.09.2021 08:25
-
sorrypepemain04.10.2021 07:32
-
АлинаКотик1111124.11.2022 23:16
-
kaskader247508.10.2020 04:57
-
Bandurustka2612.12.2022 22:49
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.