# PBinfo #2623 – lr – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Aveți la dispoziție un șir a[1], a[2], …, a[n] de numere naturale. Un element a[i] (2 ≤ i ≤ n - 1) îl numim LR dacă a[i] are toate elementele din șir aflate la stânga sa mai mici sau egale și toate elementele din dreapta sa mai mari sau egale cu a[i]. De exemplu, în șirul a = (6, 3, 1, 2, 6, 10, 7, 11, 16) sunt două elemente LR, valorile 6 și 11 de la pozițiile 5 și 8.

Cerința
Să se determine numărul elementelor LR din șir.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații, reprezentând elementele șirului.

Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând numărul elementelor LR din șir.

Restricții și precizări

3 ≤ n ≤ 100 000
cele n numere citite vor fi mai mici decât 1.000.000
Nu uitați că elementele a[1] și a[n] nu sunt LR.

Exemplu:
Intrare

12
6 4 2 7 10 8 9 14 29 30 52 50
Ieșire

4
Explicație
Numerele LR din șir se află la pozițiile 4, 8, 9, 10.

## Cod sursă C++

```cpp
#include <iostream>
#include <math.h>
using namespace std;
int n, v[100001], dreapta[100001], stanga[100001], temp = 0;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> v[i];
    stanga[1] = 1;
    for (int i = 2; i <= n; i++)
        stanga[i] = max(v[i], stanga[i - 1]);
    dreapta[n] = v[n];
    for (int i = n - 1; i >= 1; i--)
        dreapta[i] = min(v[i], dreapta[i + 1]);
    for (int i = 2; i < n; i++)
        if (stanga[i] == dreapta[i]) temp++;
    cout << temp << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2623)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2623/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2623/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
