👤

o rezolvare eficienta va rog?

O Rezolvare Eficienta Va Rog class=

Răspuns :

Explicație:

pentru ca proprietatea sa fie adevărată trebuie sa existe cel puțin n / 2 + 1 numere mai mici decât maximul din sir

- evitam folosirea unui vector

explic pe exemplul 2

ai un maxim = 0, contor = 0

1 > maxim => maxim = 1

daca x > maxim

atunci maxim = x și contor++;

- x este numărul citit, totul de face într-un for

tot așa, 12 ajunge maxim, contor = 3

apoi îl găsește pe 3

3 < maxim rezultă că am găsit un număr nou care respecta condiția

-daca numărul este egal cu maximul nu se întâmplă nimic

int main ()

{

int n, cnt = 0, maxim = 0;

cin >> n;

for ( int i = 1; i <= n; i++)

{

cin >> x;

if ( x > maxim ) maxim = x, cnt++;

if ( x < maxim ) cnt++;

}

if ( cnt >= n / 2 + 1 )

cout << "Da";

else

cout << "Nu";

return 0;

}

* sper că e corect, am scris de pe telefon, nu pot sa verific