Santinele

Time limit: 0.1s Memory limit: 128MB Input: santinele.in Output: santinele.out

Se cunosc înălțimile a NN vârfuri, plasate de la stânga la dreapta, în cadrul unui lanț muntos. Dacă plasăm o santinelă pe un vârf de o anumită înălțime, aceasta veghează vârful respectiv și maximum KK vârfuri la stânga și maximum KK vârfuri la dreapta acestuia, dar cu condiția ca înălțimile acestor vârfuri vegheate să fie mai mici sau egale cu înălțimea vârfului pe care se află santinela. Dacă există un vârf cu o înălțime strict mai mare la distanță mai mică sau egală cu KK, atunci santinela veghează doar până la acel vârf (exclusiv acel vârf).

Cerință

Date fiind NN, KK și înălțimile celor NN vârfuri, să se determine:

  1. Numărul maxim de vârfuri consecutive, începând de la primul vârf al lanțului muntos (inclusiv acest vârf), ce pot fi vegheate cu o singură santinelă.
  2. Numărul minim de santinele necesare ca toate vârfurile să fie vegheate.

Date de intrare

Fișierul de intrare santinele.in conține pe prima linie numărul cerinței, 11 sau 22. Pe a doua linie, fișierul conține numerele NN și KK, cu semnificația din enunț. Pe a treia linie, fișierul conține NN numere, h1,h2,,hNh_{1}, h_{2}, \ldots, h_{N}, reprezentând înălțimile celor NN vârfuri, în ordinea dispunerii lor de la stânga la dreapta, în cadrul lanțului muntos. Numerele aflate pe aceeași linie a fișierului de intrare sunt separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire santinele.out conține un singur număr. Dacă cerința este 11, conține numărul maxim de vârfuri determinate la această cerință. Dacă cerința este 22, conține numărul minim de santinele determinate la această cerință.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000;
  • 0K<N0 \le K < N;
  • 1hi1 000 0001 \leq h_i \leq 1 \ 000 \ 000.
# Punctaj Restricții
1 14 C=1C = 1
2 14 C=2C = 2, NN par, K=N/2K = N/2.
3 16 C=2C = 2 și h1<h2<<hNh_1 < h_2 < \ldots < h_N
4 13 C=2C = 2 și există 1<p<N1 < p < N, pentru care h1<<hp1<hp>hp+1>>hNh_1 < \ldots < h_{p-1} < h_p > h_{p + 1} > \ldots > h_N
5 14 C=2C = 2, N15N \leq 15
6 29 C=2C = 2, fără restricții suplimentare.

Exemplul 1

santinele.in

1
8 2
6 10 5 7 8 5 4 4

santinele.out

4

Explicație

Cerința este 11 și K=2K = 2. Santinela veghează vârful pe care este plasată, maximum două vârfuri la stânga și maximum două vârfuri la dreapta. Cu o singură santinelă putem acoperi maximum patru vârfuri, începând cu primul vârf, plasând santinela pe al doilea vârf.

Exemplul 2

santinele.in

2
10 2
10 5 5 10 6 7 4 1 6 7

santinele.out

4

Explicație

Cerința este 22 și K=2K = 2. Sunt necesare minimum 44 santinele, pe care le putem amplasa pe vârfurile: primul, al 44-lea, al 77-lea, al 1010-lea.

Exemplul 3

santinele.in

2
15 3
5 3 1 12 11 9 15 11 10 9 2 7 10 11 7

santinele.out

3

Explicație

Cerința este 22 și K=3K = 3. Sunt necesare minimum 33 santinele. Le putem amplasa pe vârfurile: primul, al 77-lea, al 1414-lea.

Exemplul 4

santinele.in

2
20 5
7 12 23 21 20 24 28 21 4 16 27 1 6 8 20 3 3 5 11 5

santinele.out

3

Explicație

Cerința este 22 și K=5K = 5. Sunt necesare minimum 33 santinele. Le putem amplasa pe vârfurile: al 33-lea, al 77-lea, al 1515-lea.

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