Broadcast

Time limit: 0.25s Memory limit: 32MB Input: broadcast.in Output: broadcast.out

Orașul Satu Mare este reprezentat pe axa numerelor drept o înșiruire de NN case, fiecare casă ii aflându-se la coordonata CiC_i, pentru orice ii de la 11 la NN.

Recent, s-a aflat că urmează să aibă loc în oraș un eveniment de mare anvergură: Concursul Național de Informatică „Grigore Moisil”. Astfel, administrația vrea să anunțe în tot orașul că acest eveniment are loc, prin amplasarea strategică a unor turnuri de comunicare care să răspândească această veste.

Un turn de comunicare cu puterea dd, plasat la poziția pp (care poate fi și o coordonată reală), poate transmite știrea către toate casele aflate la o distanță de cel mult dd de acesta. Formal, o casă situată la coordonata xx primește știrea dacă și numai dacă xpd|x - p| \le d.

Deoarece amplasarea turnurilor este costisitoare, s-a decis alegerea unui singur cartier format din MM case adiacente (o secvență continuă de MM case din șirul inițial), unde vor fi amplasate turnurile. Astfel, știrea va ajunge direct la toți locuitorii din cartier, urmând ca aceștia să o răspândească mai departe.

Cerință

Municipalitatea vrea să achiziționeze KK turnuri, ale căror puteri d1,d2,,dKd_1, d_2, \dots, d_K urmează să fie stabilite. Atât configurarea puterilor pentru turnuri, cât și alegerea cartierului potrivit sunt decizii dificile. Din acest motiv, administrația dorește să calculeze întâi, pentru fiecare variantă posibilă de cartier (orice subsecvență de case continuă de lungime MM), care este suma minimă necesară a puterilor (d1+d2++dKd_1 + d_2 + \dots + d_K), pentru ca cele KK turnuri să poată acoperi toate casele din acel cartier.

Date de intrare

Prima linie a fișierului de intrare conține trei numere întregi NN, MM și KK, separate prin câte un spațiu.

A doua linie conține NN numere întregi C1,C2,,CNC_1, C_2, \dots, C_N, separate prin câte un spațiu, reprezentând coordonatele celor NN case.

Date de ieșire

Fișierul de ieșire va conține NM+1N - M + 1 numere, separate prin câte un spațiu. Al ii-lea număr va reprezenta suma minimă a puterilor necesară pentru a acoperi cartierul format din casele cu indicii i,i+1,,i+M1i, i+1, \dots, i+M-1. Fiecare valoare va fi afișată cu exact o singură zecimală (de exemplu, un număr întreg precum 55 va fi afișat sub forma 5.0).

Restricții și precizări

  • 1N200 0001 \le N \le 200\ 000
  • 1MN1 \le M \le N
  • 1KM1 \le K \le M
  • 1Ci1 000 000 0001 \le C_i \le 1\ 000\ 000\ 000, pentru orice 1iN1 \le i \le N
  • C1C2CNC_1 \le C_2 \le \dots \le C_N
  • Atât puterea fiecărui turn, cât și coordonata unde este plasat pot fi numere reale (nu neapărat întregi, spre deosebire de coordonatele caselor, care se garantează că sunt numere întregi)
# Puncte Restricții
1 20 1N201 \le N \le 20
2 15 1N4001 \le N \le 400
3 15 1N2 0001 \le N \le 2\ 000
4 10 K=1K=1
5 15 K=2K=2
6 10 1N50 0001 \le N \le 50\ 000 și 1M1 0001 \le M \le 1\ 000
7 15 Fără restricții suplimentare

Exemplul 1

broadcast.in

5 3 2
2 4 8 12 16

broadcast.out

1.0 2.0 2.0

Explicație

Avem N=5N=5 case, vrem să analizăm toate cartierele de M=3M=3 case și avem K=2K=2 turnuri la dispoziție.

Primul cartier este format din casele de la coordonatele 2,4,82, 4, 8.
Pentru a le acoperi cu 22 turnuri, putem plasa un turn la coordonata 33 (acoperă casele de la 22 și 44 folosind o putere de 11) și un turn la coordonata 88 (acoperă casa de la 88 folosind o putere de 00). Suma puterilor utilizate este 1+0=11 + 0 = 1. Deci pentru primul cartier răspunsul este 11 (afișat 1.0).

Al doilea cartier este format din casele de la coordonatele 4,8,124, 8, 12.
Putem plasa un turn la coordonata 66 (acoperă 44 și 88 la distanța 22) și unul la coordonata 1212 (acoperă casa 1212 la distanța 00). Suma puterilor necesare este 2+0=22 + 0 = 2 (afișat 2.0).

Al treilea cartier este format din casele de la coordonatele 8,12,168, 12, 16.
Similar, putem plasa un turn la coordonata 1010 (acoperă 88 și 1212 cu puterea 22) și unul la 1616. Suma puterilor necesare este 2+0=2.02 + 0 = 2.0.

Exemplul 2

broadcast.in

5 3 2
2 3 10 15 16

broadcast.out

0.5 2.5 0.5

Explicație

Avem tot N=5N=5 case, M=3M=3 și K=2K=2.

Primul cartier este format din casele de la coordonatele 2,3,102, 3, 10.
Cea mai bună strategie este să folosim primul turn pentru casele de coordonate 22 și 33, plasându-l exact la mijlocul lor, adică la coordonata 2.52.5. Acesta va avea nevoie de o putere de 0.50.5. Al doilea turn îl plasăm la coordonata 1010 cu puterea 00. Suma puterilor utilizate este 0.5+0=0.50.5 + 0 = 0.5, deci răspunsul este 0.50.5.

Al doilea cartier este format din casele de la coordonatele 3,10,153, 10, 15.
Putem plasa primul turn la coordonata 33 (putere 00) și al doilea turn la coordonata 12.512.5 pentru a acoperi casele 1010 și 1515. Distanța de la 12.512.5 la 1010, respectiv 1515, este 2.52.5. Suma puterilor necesare este 0+2.5=2.50 + 2.5 = 2.5.

Al treilea cartier este format din casele de la coordonatele 10,15,1610, 15, 16.
Similar cu primul caz, plasăm un turn la coordonata 1010 (putere 00) și unul la coordonata 15.515.5 pentru a acoperi casele 1515 și 1616 (putere 0.50.5). Răspunsul este 0+0.5=0.50 + 0.5 = 0.5.

În figura de mai jos se poate observa o ilustrare a plasării optime a turnurilor pentru cele trei cartiere din al doilea exemplu:

Log in or sign up to be able to send submissions!