桐桐的数字统计(count)

桐桐在练习本上写了N个正整数,她希望知道她随手写出来的数字哪一个出现得最多,你能想出什么办法帮助她吗?
【输入格式】
第一行只有一个数:N(1≤N≤500000);
第二行有N个正整数,相邻数用空格隔开,所有数均不超过10000。
【输出格式】
出现次数最多的那个数,如果有相同次数的,则输出数值较小的那个数。
【样例数据】
输入样例
9
3 1 2 2 17 1 3 17 3
输出样例
3
输入样例
5
13 12 14 13 12
输出样例
12


#include <iostream>
#include <sstream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <stack>
#include <list>
#include <limits.h>

using namespace std;

int a[500010], cnt[10010];

int main()
{


    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        cnt[a[i]] ++; 
    }
    int maxn = INT_MIN, max_i = 1;
    for (int i = 1; i <= 10000; i++)
    {
        if ((cnt[i]>maxn) || (cnt[i]==maxn && i > max_i)){
            maxn = cnt[i];
            max_i = i;
        }
    }
    cout << maxn;


    return 0;
}