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

Cerința
Un şir se numeşte şir vale, dacă are un singur minim pe poziţia v şi respectă următoarele proprietăţi:

În stânga şi în dreapta minimului există cel puţin câte un element.
Secvenţa a[1], a[2], ... , a[v] este strict descrescătoare.
Secvenţa a[v], a[v+1], ... , a[n] este strict crescătoare.
Se citeşte un şir cu n elemente. Să se verifice dacă este şir vale.

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 vale 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
4 3 2 1 2
Ieșire

DA
Explicație
Primul exemplu NU este şir vale, pe când al doilea exemplu este şir vale.

problema #1326 de pe pbinfo

Răspunsuri la întrebare

Răspuns de uleiaalex
1
Sper ca te-am ajutat. Nu am testat mai multe exemple doar ce mi-ai lasat tu.#include <iostream>
using namespace std;
int main(){ int n = 0; //citeste n cout<<"Lungime sir: "; cin>>n;  //declar vectorul int v[n];
 //citesc elementele vectorului for (int j = 0; j < n; j++) {    cout<<"v["<<j<<"]=";    cin>>v[j];    cout<<endl; }     //variabila verificare conditiebool ok = true;
//verific daca e inceput crescatorint i = 0;while (i < n - 1 && v[i] < v[i + 1] && ok)    ok = false;
//determin portiunea descrescatori = 0;while (i < n - 1 && v[i] > v[i + 1] && ok)    i++;
//verific daca sirul este numai crescator atunci i-ul avand //valoarea indicelui ultimului element al vectoruluiif (i >= n - 1)    ok = false;
 //verific daca conditia de munte este si dupa ce se termina sirul crescator. for (int j = i; j < n-1 && ok; j++) {    if (v[j] > v[j + 1])       ok = false; }
 //Afisez mesajele corespunzatoare. if (ok)    cout<<"DA"; else    cout<<"NU";}
Alte întrebări interesante