TNV - Đội tình nguyện viên

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, Python, Ruby, Rust, Scratch, Swift

Tháng ~7~ năm nay trường ta (THPT Chuyên Sơn La) đăng cai tổ chức THHV lần thứ XV. Để chuẩn bị cho sự kiện trọng đại này, nhà trường cần sự tham gia tích cực của các bạn học sinh vào công tác tình nguyện (tiếp đón đại biểu các trường, chỉ dẫn đường đi, …).

Để chọn đội tình nguyện viên, BTC THHV muốn chọn những em học sinh có chiều cao bằng nhau (để được đội hình đồng đều, đẹp). Biết rằng nhà trường có ~n~ em học sinh có chiều cao lần lượt là ~h_1, h_2, …, h_n~.

Yêu cầu:Hãy giúp BTC THHV chọn ra một nhóm học sinh có chiều cao bằng nhau với số lượng nhiều nhất, nếu có nhiều nhóm có số lượng bằng nhau thì chọn nhóm có chiều cao lớn nhất.

Input

  • Dòng đầu chứa số nguyên dương ~n~;
  • Dòng thứ hai chứa ~n~ số nguyên dương ~h_1, h_2, …, h_n~.

Hai số liên tiếp trên một dòng được ghi cách nhau một dấu cách.

Giới hạn:

  • ~1 ≤ n ≤ 10^5; 1 ≤ h_i ≤ 10^9~.

Output

  • Ghi ra một dòng duy nhất chứa hai số nguyên dương là chiều cao và số lượng các em học sinh chọn được.

Sample

Input #1
5
155 156 156 157 156
Output #1
156 3

Hint

Xét #1, có ~1~ em cao ~155~, ~3~ em cao ~156~ và ~1~ em cao ~157~. Do đó chọn được ~3~ em học sinh có chiều cao bằng nhau là ~156~

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


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    anh122221  đã bình luận lúc 12, Tháng 2, 2024, 15:10

    hơi loằng ngoằng nhưng AC là đc :> #include <bits/stdc++.h> using namespace std; using ll = long long;

    int main(){

    map<ll, ll> f;

    vector<ll> height; // save height of students

    ll n;

    cin >> n;

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

      ll x;
    
      cin >> x;
    
      map&lt;ll, ll>::iterator it = f.find(x);
    
      if(it == f.end()) { // not found
    
         f.insert(make_pair(x, 1));
    
         height.push_back(x);
    
      }
    
      else{
    
         f[x]++;
    
      }
    

    }

    sort(height.begin(), height.end());

    ll maxnumberequal = -1;

    for(const auto& r : f) {

      if(max_number_equal < r.second) 
    
         max_number_equal = r.second;
    

    }

    ll count = 0;

    for(const auto& r : f) {

      if(max_number_equal == r.second) 
    
         count++;
    

    }

    if(count > 1) { // duplicate

      for(ll i = height.size() - 1; i >= 0; ++i) {
    
         if(f[height[i]] == max_number_equal) cout << height[i] << " " << max_number_equal;
    
         break;
    
      }
    

    }

    else { // count == 1 -> not duplicate

      for(auto h : height){
    
         if(f[h] == max_number_equal) cout << h << " " << max_number_equal;
    
      }
    

    }

    }


    • -1
      sang41dz  đã bình luận lúc 21, Tháng 2, 2024, 13:14

      Này gọi dùng dao mổ trâu thịt gà :)) loằng ngoằng+ k hiệu quả :))


    • 2
      khanhstaam3103  đã bình luận lúc 17, Tháng 2, 2024, 18:00

      khi overthinking viết code hả, bài có chút éc mà..

      include <bits/stdc++.h>

      using namespace std;

      int main(){ iosbase::syncwith_stdio(false); cin.tie(NULL); cout.tie(NULL); if (fopen("input.txt","r")){ //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); } int n; cin >> n; long long A[n+3]; map <long long,int> mp; for (int i=0;i<n;i++){ cin >> A[i]; mp[A[i]]++; } sort(A,A+n); long long maxhight=A[0]; int maxcnt=mp[A[0]]; for (int i=0;i<n;i++){ if (mp[A[i]]>=maxcnt){ maxcnt=mp[A[i]]; maxhight=A[i]; } } cout << maxhight <<' ' << maxcnt; }