Rezolvare completă PbInfo #1321 sir_munte

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema sir_munte:

#include <iostream>

using namespace std;

int main()
{
    int a[1001],n,i;
    bool cr,de;
    cin>>n;
    for(i=0;i<n;++i)
        cin>>a[i];

    cr=de=false;
    for(i=0;i<n-1;++i)
        if (a[i]==a[i+1])
        {
            cout<<"NU";   //  daca gasim doua elementele egale, nu poate fi munte
            return 0;
        }
        else
            if (a[i]>a[i+1])
                if (cr)
                    de=true;  // am gasit elemente descrescatoare
                else
                {
                    cout<<"NU";// elemente descrescatoare si nu a fost parte crescatoare
                    return 0;  // nu poate fi munte
                }
            else
                if (a[i]<a[i+1])
                    if (!de)
                        cr=true;   // am gasit elemente crescatoare
                    else
                    {
                        cout<<"NU";// elemente crescatoare dupa parte descrescatoare
                        return 0;  // nu poate fi munte
                    }
    if (cr and de)
        cout<<"DA";  // sirul contine atat parte crescatoare cat si descrescatoare
    else
        cout<<"NU";  // nu are parte descrescatoare
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1321 sir_munte

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1321 sir_munte de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!