Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

Problema #2623 LR de pe pbinfo va rog:
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.

Răspunsuri la întrebare

Răspuns de pmarian98
5

Răspuns:

#include <iostream>

#include <algorithm>

using namespace std;

int v[100001],v1[100001];

int main(){

   int c=0,i,n;

   cin>>n;

   cin>>v[1];v1[1]=v[1];

   for( i=2; i<=n; i++)

       {

           cin>>v[i];

           v1[i]=max(v[i],v1[i-1]);

       }

   for( i=2; i<n; ++i)

       if(v1[i]>v1[i-1]&&v1[i]<v1[i+1])

               c++;

    cout<<c;

    return 0;

}

Explicație:


laurstefan2002: E de 80, de 80 o aveam si eu, daca o faci 100, as fi recunoscator.
pmarian98: #include
#define nmax 100003
using namespace std;

int a[nmax], st[nmax], dr[nmax], n;

int main()
{
int i, cnt = 0;
cin >> n;
for (i = 1; i <= n; i++)
cin >> a[i];

st[1] = 1;
for (i = 2; i <= n; i++)
st[i]= max(a[i], st[i - 1]);
dr[n] = a[n];
for (i = n - 1; i >= 1; i--)
dr[i] = min(a[i], dr[i + 1]);

for (i = 2; i < n; i++)
if (st[i] == dr[i]) cnt++;
cout << cnt << "\n";
return 0;
}
laurstefan2002: Da, e de 100 asta,
laurstefan2002: Mersi!
Alte întrebări interesante