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

o rezolvare eficienta va rog?

Anexe:

andrei750238: Se respecta conditia daca valorea maxima apare de mai putin de n/2 ori in sir.

Răspunsuri la întrebare

Răspuns de andreidamian604
1

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


andrei750238: if(x>maxim){ maxim=x; cnt=1 }
Alte întrebări interesante