Số lần xuất hiện 1

Xem PDF



Tác giả:
Dạng bài
Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 650M Input: bàn phím Output: màn hình

Cho một dãy gồm \(n\) số nguyên dương \(A_1,A_2,\ldots,A_n\).

Yêu cầu: Hãy in ra tất cả các số trong mảng \(A\) cùng với số lần xuất hiện của chúng.

Input

  • Dòng đầu chứa số \(n\) (\(n\leq 10^5\)).
  • Dòng thứ hai chứa \(n\) số nguyên dương \(A_1,A_2,\ldots,A_n\) (\(A_i\leq 10^6\)).

Output

  • Gồm \(n\) dòng, mỗi dòng ghi số hạng thứ \(A_i\) và số lần xuất hiện của chúng.

Example

Test 1

Input
9
2 3 1 2 3 4 5 4 3
Output
2 2
3 3
1 1
2 2
3 3
4 2
5 1
4 2
3 3

Bình luận

  • N7hoatt 5:28 p.m. 4 Tháng 8, 2020 chỉnh sửa 3

    HINT


    Ý TƯỞNG 1: CÀY TRÂU

    • ta cho duyệt qua từng phần tử của mảng xét với phần tử đang đứng hiện tại, nếu bằng nhau ta tăng biến dem++

    Reference TLE CODE | \(O(n^2)\) time | Brute-forces

     int main()
     {
          cin>>n;
          for(int i=1; i<=n; i++)
             cin>>a[i];
          for(int i=1; i<=n; i++)
          {
               ll dem=0;
               for(int j=1; j<=n; j++)
                    if(a[i]==a[j])
                        dem++;
               cout<<a[i]<<" "<<dem<<endl;
          }
     }
    

    Ý TƯỞNG 2: ĐẾM PHÂN PHỐI

    • ta tạo ra một mảng \(dem[]\) nhằm lưu lại tần số của các phần tử trong mảng bằng cách duyệt qua từng phần tử và tăng giá trị của dem[a[i]]++

    Reference AC CODE | O(n) time | Distrubition-count

     int main()
     {
         cin>>n;
         for(int i=1; i<=n; i++)
             cin>>a[i], dem[a[i]]++;
         for(int i=1; i<=n; i++)
             cout<<a[i]<<" "<<dem[a[i]]<<endl;
     }
    

    p/s:upvote hoặc không tôi sẽ gửi đồng chí tới gulag

  • 4 bình luận nữa