proeminenta

Time limit: 0.3s Memory limit: 64MB Input: proeminenta.in Output: proeminenta.out

Cea mai cunoscută măsură a unui vârf de munte este altitudinea sa. Vârfuri secundare ale unui munte înalt pot avea altitudini considerabile, dar în general acestea nu sunt atât de relevante. Din acest motiv, geografii au introdus o nouă măsură pentru un vârf: proeminenţa. Un profil este o reprezentare a altitudinilor în puncte succesive, între care ne putem deplasa la stânga sau dreapta.

În desen avem profilul munţilor Făgăraş, pe care exemplificăm următoarele definiţii:

  1. Un vârf este un punct (sau o succesiune de puncte consecutive cu aceeaşi altitudine), pentru care altitudinile punctelor alăturate în stânga, respectiv în dreapta sunt strict mai mici decât altitudinea vârfului. De exemplu, Negoiu este un vârf (altitudinea sa este 2535m2535m, punctul de pe profil situat în stânga sa are altitudinea 2306m2306m, iar punctul de pe profil situat în dreapta sa are altitudinea 2030m2030m). Un alt exemplu de vârf este Urlea, fiind reprezentat pe profil prin două puncte consecutive cu altitudinea 2473m2473m, având în stânga un punct cu altitudinea 2160m2160m, iar în dreapta un punct cu altitudinea 1511m1511m.
  2. Cea mai adâncă vale dintre două vârfuri este altitudinea minimă a unui punct care se află între cele două vârfuri. De exemplu, în desen între Negoiu şi Moldoveanu cea mai adâncă vale este la 2030m.
  3. Proeminenţa unui vârf este diferenţa minimă dintre altitudinea lui şi cea mai adâncă vale dintre el şi un vârf strict mai înalt decât el. Dacă nu există un vârf strict mai înalt, proeminenţa este altitudinea vârfului. De exemplu, pentru a determina proeminenţa vârfului Gălăşescu Mare putem considera vârfurile strict mai înalte (în ordine de la stânga la dreapta: Negoiu, Moldoveanu şi Urlea). Dacă plecăm de pe Negoiu, diferenţa dintre cea mai adâncă vale şi Gălăşescu Mare este 24702030=440m2470-2030=440m. Dacă plecăm de pe Moldoveanu, diferenţa dintre cea mai adâncă vale şi Gălăşescu Mare este 24702213=257m2470-2213=257m. Dacă plecăm de pe Urlea, diferenţa dintre cea mai adâncă vale şi Gălăşescu Mare este 24702160=310m2470-2160=310m. Diferenţa minimă este 257m257m, deci proeminenţa vârfului Gălăşescu Mare este dată de vârful Moldoveanu.

Cerințe

Scrieţi un program care, cunoscând configuraţia unui profil, rezolvă următoarele două cerinţe:

  1. determină numărul de vârfuri existente pe profilul respectiv;
  2. determină proeminenţa fiecărui vârf de pe profil.

Date de intrare

Fișierul de intrare proeminenta.in conține pe prima linie numărul natural CC, reprezentând cerinţa care trebuie să fie rezolvată: 11 sau 22. Pe cea de a doua linie se află numărul natural NN, reprezentând numărul de puncte din profil. Pe a treia linie se află N numere naturale separate prin câte un spaţiu a1,a2,,aNa_1, a_2, \dots, a_N, reprezentând altitudinile celor NN puncte de pe profil, în ordine de la stânga la dreapta.

Date de ieșire

Fișierul de ieșire proeminenta.out va conține o singură linie pe care va fi scris răspunsul la cerinţa CC. Dacă C=1C = 1 răspunsul va fi numărul natural NrNr, reprezentând numărul de vârfuri. Dacă C=2C = 2 răspunsul va fi o succesiune de NrNr valori naturale separate prin câte un singur spaţiu, reprezentând proeminenţele celor NrNr vârfuri, în ordinea din fişierul de intrare.

Restricții și precizări

  • 3N1063 \leq N \leq 10^6;
  • 0ai<2310 \leq a_i < 2^{31}, pentru 1iN1 \leq i \leq N;
  • a1<a2a_1 < a_2 și aN1>aNa_{N-1} > a_N;
# Punctaj Restricții
1 10 C=1C = 1
2 30 C=2C = 2 și N1000N \leq 1000
3 20 C=2C = 2 și altitudinile aia_i sunt distincte două câte două
3 40 Fără alte restricții

Exemplul 1

proeminenta.in

1
19
1387 1890 2306 2535 2030 2391 2079
2544 2213 2470 2305 2433 2160 2473
2473 1511 1735 1621 1367

proeminenta.out

7

Exemplul 2

proeminenta.in

2
19
1387 1890 2306 2535 2030 2391 2079
2544 2213 2470 2305 2433 2160 2473
2473 1511 1735 1621 1367

proeminenta.out

505 312 2544 257 128 313 224

Explicație

Profilul din fişierele de intrare este cel reprezentat în desen. Cele 7 vârfuri sunt denumite pe desen. Deși altitudinile apar în tabel pe mai multe linii, ele vor fi scrise pe o singură linie în fișierul de intrare.

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