👤

Salut, am urmatoarea problema :
Cerință :
Se dă un număr natural n și un șir de n numere naturale.
Să se afle numărul care apare de cele mai multe ori în șir.

Date de intrare :
De pe prima linie se citește numărul natural n.
De pe a doua linie se citesc n numere naturale.

Date de ieșire :
Pe prima linie se va afișa cel mai frecvent număr din șir.

Restricții și precizări:
1 ≤ n ≤ 10000
0 ≤ valoarea unui element din șir ≤ 500
În cazul în care două numere apar de același număr de ori în șir, se va lua în considerare cel cu valoarea cea mai mare.

Pana acum am reusit sa scriu acest cod, numai ca am o problema si programul ruleaza la infinit (Output limit excedeed)
Ma puteti ajuta sa descopar gresala?
#include
using namespace std;

int main() {
int n, v[10000];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> v[i];
}
int ap[10000];
for (int i = 1; i <= n; i++) {
ap[i] = 0;
}
for(int i = 1; i <= n; i++) {
ap[v[i]]++;
}
int valMax = 0;
for(int i = 0; i <= 500; i++) {
if(ap[valMax] < ap[i] && ap[i] <= n) {
valMax = i;
} else if (ap[valMax] == ap[i] && ap[i] <= n) {
valMax = i;
}
}
cout << valMax << endl;
return 0;
}


Răspuns :

Răspuns:

Problema din codul tău este că ai început indexarea de la 1 în loc de la 0 când ai parcurs șirul pentru a număra aparițiile fiecărui element. Modifică aceste bucle for astfel încât să înceapă de la 0. În plus, trebuie să ai grijă la dimensiunea array-ului `ap`, trebuie să fie cel puțin 501 pentru a putea acoperi toate valorile posibile (de la 0 la 500). Mai jos este codul modificat:

```cpp

#include <iostream>

using namespace std;

int main() {

int n, v[10000];

cin >> n;

for (int i = 0; i < n; i++) {

cin >> v[i];

}

int ap[501]; // Dimensiunea modificata

for (int i = 0; i < 501; i++) { // Modificare aici

ap[i] = 0;

}

for(int i = 0; i < n; i++) { // Modificare aici

ap[v[i]]++;

}

int valMax = 0;

for(int i = 0; i <= 500; i++) {

if(ap[valMax] < ap[i] && ap[i] <= n) {

valMax = i;

} else if (ap[valMax] == ap[i] && ap[i] <= n) {

valMax = i;

}

}

cout << valMax << endl;

return 0;

}

```

Aceste modificări ar trebui să corecteze problema și să permită programului să ruleze corect.