# PBinfo #4422 – inima – Rezolvare C++

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

## Enunț

Medicii de la Institutul Inimii doresc să calculeze puterea maximă a inimii unui pacient, utilizând măsurători făcute cu aparate electronice.

Se dau n numere naturale, reprezentând intensitățile bătăilor unei inimi la intervale de o secundă. Intensitățile pot fi vizualizate ca n linii verticale de înălțimi \({h}_{1}, {h}_{2}, … {h}_{n}\). Distanța dintre două linii consecutive este 1.

Puterea maximă a unei inimi se definește ca fiind aria maximă a unui dreptunghi care se poate obține între două bătăi oarecare ale inimii.

Cerința
Cunoscând numărul n de bătăi ale inimii unui pacient și intensitățile acestora \({h}_{1}, {h}_{2}, … {h}_{n}\), determinați puterea maximă a inimii.

Date de intrare
Fișierul de intrare inima.in conține pe prima linie un număr natural N reprezentând numărul de bătăi ale inimii. Pe linia a doua se găsesc n numere naturale separate prin câte un spațiu: \({h}_{1}, {h}_{2}, … {h}_{n}\), reprezentând intensitățile bătăilor inimii.

Date de ieșire
Fișierul de ieșire inima.out va conține pe prima linie un număr natural p, unde p este puterea maximă a inimii.

Restricții și precizări

1 ≤ n ≤ 100 000
\(1 ≤ {h}_{i} ≤ 200\)
Pentru 50 de puncte, n ≤ 1000

Exemplu:
inima.in

9 
1 8 6 2 5 4 8 3 7
inima.out

49
Explicație
Puterea maximă a inimii (partea colorată) între două bătăi este 49



inima.in

2 
1 1
inima.out

1
Explicație
Puterea maximă a inimii (partea colorată) între două bătăi este 1

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream fin("inima.in");
ofstream fout("inima.out");
int n, puls[100000];
int main()
{
    fin >> n;
    for(int i = 0; i < n; ++i)
        fin >> puls[i];
    int activitate = 0;
    int w, i = 0, j = n - 1;
    while (i < j) {
        int h = min(puls[i], puls[j]);
        activitate = max(activitate, (j - i) * h);
        while (puls[i] <= h && i < j) 
            i++;
        while (puls[j] <= h && i < j) 
            j--;
    }
    fout << activitate;
    return 0;
}
```

## Resurse

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