de ce primesc 90 de puncte din 100?
Problema este de pe pbinfo, si se numeste 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.
Multumesc anticipat!
Răspunsuri la întrebare
Salut! Uite solutia oficiala, poate te ajuta:
#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;
}