Informatică, întrebare adresată de tomacornelus99, 9 ani în urmă

Fisierul date.in contine un sir de cel mult un milion de numere naturale din intervalul
[0,10^9], separate prin câte un spațiu. Șirul are cel puțin doi termeni pari și cel puțin doi
termeni impari.
Se cere să se afișeze pe ecran mesajul DA dacă șirul aflat în fișier are un subșir ordonat strict crescător, format din toți termenii impari ai săi, și un subșir ordonat strict
descrescător, format din toți termenii pari ai săi. Dacă nu există două astfel de subșiruri,
programul afișează pe ecran mesajul NU. Pentru verificarea proprietății cerute utilizați un algoritm eficient din punctul de vedere al timpului de executare și al memoriei necesare.
Exemplu: dacă fisierul contine numerele
8 1 6 3 5 4 7
se afisează pe ecran mesajul
DA
iar dacă fișierul conține numerele
2 1 6 3 5 4 7
se afisează pe ecran mesajul
NU

Scrieți programul C/C++ corespunzător algoritmului descris.
am nevoie doar de conditiile de la if-uri

Răspunsuri la întrebare

Răspuns de ionutg38
2
Retinem intr-o variabila IMPAR numarul impar anterior din sir iar intr-o variabila PAR numarul par anterior si doua switch-uri (SWI=1 (true) pentru numerele impare si  SWP=1 (true) pentru numerele pare, adica presupunem ca exista cele doua subsiruri cerute). IF-urile pe care le soliciti ar fi:
if(a[i]%2&&a[i]<IMPAR)
{ SWI=0; break;}

if(a[i]%2==0&&a[i]>PAR)
{SWI=0;break}

Dupa ce iesi din bucla FOR verifici:
if(SWI==1&&SWP==1)
cout<<"DA";
else
cout<<"NU";

ionutg38: Daca ai nelamuriri, intreaba-ma.
Alte întrebări interesante