fbpx

Problema #1321 – sir_munte – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Un şir se numeşte şir munte, dacă are un singur maxim pe poziţia v, numit vârf şi respectă următoarele proprietăţi:

Cerința

Un şir se numeşte şir munte, dacă are un singur maxim pe poziţia v, numit vârf şi respectă următoarele proprietăţi:

  • În stânga şi în dreapta vârfului există cel puţin câte un element.
  • Secvenţa a[1], a[2], ... , a[v] este strict crescătoare.
  • Secvenţa a[v], a[v+1], ... , a[n] este strict descrescătoare.

Se citeşe un şir cu n elemente. Să se verifice dacă este şir munte.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire

Programul va afișa pe ecran unul dintre mesajele DA sau NU în funcţie că este şir munte sau nu.

Restricții și precizări

  • 3 ≤ n ≤ 1000
  • 0 ≤ elementele şirului ≤ 1 000 000 000

Exemplu 1:

Intrare

5
1 2 3 4 5

Ieșire

NU

Exemplu 2:

Intrare

5
1 2 3 4 3

Ieșire

DA

Explicație

Primul exemplu nu este şir munte, pe când al doilea exemplu este şir munte.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int i , n , nr_varfuri=0;
    cin>>n; 
    int v[n+1];
    cin>>v[1]>>v[2];
    if(v[1]>v[2]||v[1]==v[2])
    {
        cout<<"NU";
        return 0;
    }
    for(i=3;i<n;i++)
    {
        cin>>v[i];  
        if(v[i]==v[i-1])
        {
            cout<<"NU";
            return 0;
        }
        else if(nr_varfuri==0 && v[i-1]>v[i])
        {
            nr_varfuri++;   
        }
        else if(nr_varfuri==1 && v[i-1]<v[i])
        {
            cout<<"NU";
            return 0;
        }   
    }
    cin>>v[n];
    if(v[n-1]==v[n] || v[n-1]<v[n])
    {
        cout<<"NU";
        return 0;
    }
    cout<<"DA"; 
    return 0;
}
Comentarii

S-ar putea sa iti placa