MAXFREQ - Phần tử xuất hiện nhiều nhất

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho một dãy gồm ~n~ số nguyên ~a_1, a_2, …, a_n~, tìm phần tử xuất hiện nhiều nhất trong dãy.

Input

  • Dòng đầu tiên chứa duy nhất một số nguyên dương ~n~ (số phần tử trong dãy).
  • Dòng thứ hai chứa ~n~ số nguyên là các phần tử ~a_1, a_2, …, a_n~

Giới hạn:

  • ~1≤n≤10^5,0≤a_i≤10^5~

Output

  • In ra trên một dòng hai số nguyên là phần tử xuất hiện nhiều nhất và số lần xuất hiện của phần tử đó (nếu có nhiều phần tử khác nhau với số lần xuất hiện là như nhau và lớn nhất thì in ra phần tử đầu tiên xuất hiện trong dãy).

Sample

Input #1
5
2 1 1 2 3
Output #1
22
Input #2
5
3 1 3 1 2
Output #2
3 2

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 0
    taidotai  đã bình luận lúc 28, Tháng 4, 2026, 14:57

    include <bits/stdc++.h>

    using namespace std ;
    int main ()
    {
        int n ;
        cin >> n ;
    
        map<int,int> a ;
    
        for (int i = 0 ; i < n ; i++ ){
            int x ;
            cin >> x ;
            a[x]++ ;
        }
    
        int max_1 = 0 ;
        int first = 0 ;
    
        for (auto c : a) {
            if (c.second > max_1) {
                max_1 = c.second ;
                first = c.first ;
            }
            else if (c.second == max_1 && c.first > first){
                first = c.first ;
            }
        }
        cout << first << " " << max_1 ;
    }
    

  • 0
    duc131012  đã bình luận lúc 29, Tháng 11, 2025, 8:42

    include <bits/stdc++.h>

    using namespace std; int a[100000]; int solan ( int n,int k ) { int cnt = 0; for ( int i = 1; i <= n; i++ ) { if ( a[i] == a[k] ) cnt++; } return cnt; } int main() { int n; cin >> n; long long max = 0; for ( int i = 1; i <= n; i++ ) { cin >> a[i]; } long long soxuat = 0; for ( int i = 1; i <= n; i++ ) { int cnt = solan(n,i); if ( cnt > max ) { max = cnt; soxuat = a[i]; } } cout << soxuat << " " << max; }


  • 0
    congtyluuthaibao1978  đã bình luận lúc 26, Tháng 11, 2025, 14:02

    include <bits/stdc++.h>

    using namespace std;

    int main() { int n; cin >> n; vector<int> a(n); unordered_map<int,int> freq; // đếm tần suất for(int i = 0; i < n; i++) { cin >> a[i]; freq[a[i]]++; }

    int maxFreq = 0;
    int ans = a[0]; // khởi tạo phần tử đầu tiên
    for(int i = 0; i < n; i++) {
        if(freq[a[i]] > maxFreq) {
            maxFreq = freq[a[i]];
            ans = a[i];
        }
    }
    
    cout << ans << " " << maxFreq << endl;
    return 0;
    

    }


  • 0
    vinhtdp02  đã bình luận lúc 29, Tháng 11, 2023, 8:52

    sao test 2 khi xuất thì có dấu cách còn test 1 thì k z a


    • -2
      lehongduc  đã bình luận lúc 24, Tháng 5, 2024, 4:20

      cậu nghĩ giống tớ :v


      • 0
        theguy777_jaboi  đã bình luận lúc 16, Tháng 8, 2024, 2:41

        ngta quên đấy