o rezolvare eficienta va rog?
Răspunsuri la întrebare
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