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

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
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


Comments

Please read the guidelines before commenting.



  • 0
    anh122221  commented on Feb. 12, 2024, 3:10 p.m.

    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;
    
      }
    

    }

    }


    • 0
      sang41dz  commented on Feb. 21, 2024, 1:14 p.m.

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


    • 0
      khanhstaam3103  commented on Feb. 17, 2024, 6:00 p.m.

      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; }