Buonasera a tutti!

Sono alle prese con il seguente problema: Dato un'array di N interi, dire qual'è l'elemento che compare con maggior frequenza fra i numeri inseriti. Io ho pensato la seguente soluzione che però non si comporta in output come dovrebbe, ovvero mi restituisce sempre la prima posizione... Potreste aiutarmi indicandomi dove sbaglio??
codice:
#include <iostream>

using namespace std;

int main () {

    cout << "Inserisci dimensione array: ";

    int n;

    cin >> n;

    int a[n];

    cout << "Inserisci elementi array" << endl;

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

        cin >> a[i];

    }

    int freq = 0;

    int conta = 0;

    int piu_freq = 0;

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

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

            if (a[i] == a[j])

                conta++;

                if (conta > freq){

                    freq = conta;

                    piu_freq = a[i];

                }

                conta = 0;

        }
    }


    cout << "Il piu' frequente e': " << piu_freq << endl;

}
Vi ringrazio anticipatamente per la pazienza e la cortesia! Scusate la mia inesperienza e gli eventuali errori.