zapada

Time limit: 0.29s Memory limit: 8MB Input: zapada.in Output: zapada.out

Aurel s-a pregătit pentru ninsoare, dar zăpada care s-a așezat aseară tot i-a dat bătăi de cap. Aleea pe care trebuie să o deszăpezească Aurel este formată din nn dale pătrate, pozițiile acestora fiind numerotate în ordine, de la stânga la dreapta, de la 11 la nn. Fiind un tip meticulos, înainte de a se apuca de treabă, Aurel a determinat cantitatea de zăpadă (exprimată în grame) care s-a așezat pe fiecare dintre cele nn dale și a notat cu ziz_i cantitatea de zăpadă existentă pe dala ii (1in1 \le i \le n). Pentru a curăța aleea, el trebuie să mute toată zăpada de pe alee, în stânga sau în dreapta acesteia. Pentru simplitate, vom considera că zona din stânga aleii are poziția 00, iar zona din dreapta aleii are poziția n+1n + 1.

Pentru deszăpezire, Aurel a cumpărat 4040 de lopeți speciale, numerotate de la 00 la 3939. Cu lopata kk (0k390 \le k \le 39) Aurel poate muta cel mult 2k2^k grame de zăpadă de pe dala pe care se află aceasta pe o poziție alăturată, la stânga sau la dreapta, deci de pe poziția ii (1in1 \le i \le n) pe poziția i1i - 1 sau pe poziția i+1i + 1, pentru această acțiune consumând k+1k + 1 calorii.

Pentru a fi eficient, Aurel a decis să împartă aleea în două zone. Prima zonă conține toate dalele situate pe poziții mai mici sau egale cu xx, iar a doua zonă conține toate dalele de poziții strict mai mari decât xx. El va folosi lopețile pentru a muta toată zăpada din prima zonă pe poziția 00 și toată zăpada din a doua zonă pe poziția n+1n + 1.

Cerință

Cunoscând numărul de dale și zăpada acumulată pe fiecare dală, scrieți un program care să rezolve următoarele cerințe:

  1. cunoscând valoarea xx, determinați numărul total minim de calorii consumate de Aurel pentru a deszăpezi aleea;
  2. determinați valoarea xx pentru care numărul total de calorii consumate de Aurel pentru deszăpezirea aleii este minim; dacă există mai multe astfel de valori, să se determine cea mai mică dintre acestea.

Date de intrare

Fișierul de intrare zapada.in conține pe prima linie numărul natural CC reprezentând cerința care trebuie rezolvată (11 sau 22). Pe a doua linie se află numărul natural nn reprezentând numărul de dale de pe alee. Pe a treia linie se află nn numere naturale separate prin câte-un spațiu z1,z2,znz_1, z_2, \dots z_n, reprezentând cantitatea de zăpadă existentă pe fiecare dală. Dacă C=1C = 1, atunci pe cea de-a patra linie se află numărul natural xx.

Date de ieșire

Fișierul de ieșire zapada.out conține o singură linie pe care este scris răspunsul la cerința CC.

Restricții și precizări

  • 2n1052 \le n \le 10^5
  • 1zi1061 \le z_i \le 10^6, pentru orice 1in1 \le i \le n
  • 1x<n1 \le x < n
# Punctaj Restricții
1 23 C=1C = 1
2 22 C=2C = 2, 2n10002 \le n \le 1000
3 37 C=2C = 2, 1000<n50 0001000 < n \le 50 \ 000
4 18 C=2C = 2, fără restricții suplimentare

Exemplul 1

zapada.in

1
4
1 3 1 3
2

zapada.out

10

Explicație

C=1C=1. Există 44 dale pe alee, iar xx este egal cu 22, deci prima zonă este formată din dalele de pe pozițiile 11 și 22, iar a doua zonă din dalele de pe pozițiile 33 și 44. Pentru un consum minim de 1010 calorii, Aurel poate proceda astfel, pentru fiecare pas fiind indicată poziția de pe care este mutată zăpada, ce cantitate se mută și poziția pe care este mutată:
cu lopata 00: 21gr12 \xrightarrow{1gr} 1; consum 11
cu lopata 11: 22gr12 \xrightarrow{2gr} 1; consum 22
cu lopata 22: 14gr01 \xrightarrow{4gr} 0; consum 33
cu lopata 00: 31gr43 \xrightarrow{1gr} 4; consum 11
cu lopata 22: 44gr54 \xrightarrow{4gr} 5; consum 33
Calorii consumate în total 1010

Exemplul 2

zapada.in

2
4
1 4 4 1

zapada.out

1

Explicație

C=2C=2. Dacă alegem x=1x=1 putem deszăpezi aleea cu un consum total minim de 1313 calorii astfel:
cu lopata 00: 11gr01 \xrightarrow{1gr} 0; consum 11
cu lopata 22: 24gr32 \xrightarrow{4gr} 3; consum 33
cu lopata 33: 38gr43 \xrightarrow{8gr} 4; consum 44
cu lopata 44: 49gr54 \xrightarrow{9gr} 5; consum 55
Dacă alegem x=3x=3 obținem același consum minim, dar 11 este mai mic decât 33.
Dacă alegem x=2x=2 obținem un consum mai mare (1414).

Exemplul 3

zapada.in

2
10
5 3 2 2 7 3 5 5 3 5

zapada.out

2

Explicație

C=2C=2. Consumul total minim de calorii este 4646 și se obține pentru x=2x=2 și x=4x=4 (22 fiind minim).
Orice altă alegere pentru xx conduce la un consum de calorii mai mare.

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