#include <iostream>
#include <vector>
#include <unordered_map>
#include <limits>
int main( ) {
using namespace std;
int n;
cout << "Hello! How many numbers will you be entering?" ;
cin >> n;
if ( n<= 0 ) {
cout << "Looks like there are no numbers to check. Goodbye!" << endl;
return 0 ; }
vector< int > arr( n) ;
cout << "Great, please enter your " << n<< " numbers: " << endl;
for ( int i= 0 ; i< n; ++ i) {
cin >> arr[ i] ;
}
unordered_map< int , int > freqMap;
for ( int number : arr) {
freqMap[ number] ++ ;
}
int maxFreq = 0 ;
int maxElement = 0 ;
int minFreq = numeric_limits< int > :: max ( ) ;
int minElement = 0 ;
for ( auto const & [ element, frequency] : freqMap) {
if ( frequency> maxFreq) {
maxFreq= frequency;
maxElement= element;
}
if ( frequency< minFreq) {
minFreq= frequency;
minElement= element;
}
}
cout << "\n --- All done! Here's what I found ---" << endl;
cout << "The most frequent number is " << maxElement<< ", which appeared " << maxFreq<< " times." << endl;
cout << "The least frequent number is " << minElement<< ", which appeared " << minFreq<< " times." << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPGxpbWl0cz4KaW50IG1haW4oKSB7CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwoKICAgIGludCBuOwogICAgY291dDw8IkhlbGxvISBIb3cgbWFueSBudW1iZXJzIHdpbGwgeW91IGJlIGVudGVyaW5nPyI7CiAgICBjaW4+Pm47CgogICAgaWYobjw9MCl7CiAgICAgICAgY291dDw8Ikxvb2tzIGxpa2UgdGhlcmUgYXJlIG5vIG51bWJlcnMgdG8gY2hlY2suIEdvb2RieWUhIjw8ZW5kbDsKICAgICAgICByZXR1cm4gMDt9CiAgICB2ZWN0b3I8aW50PiBhcnIobik7CiAgICBjb3V0IDw8IkdyZWF0LCBwbGVhc2UgZW50ZXIgeW91ciAiPDxuPDwiIG51bWJlcnM6ICI8PGVuZGw7CiAgICBmb3IgKGludCBpPTA7aTxuOysraSkgewogICAgICAgIGNpbiA+PiBhcnJbaV07CiAgICB9CiAgICB1bm9yZGVyZWRfbWFwPGludCwgaW50PiBmcmVxTWFwOwogICAgZm9yIChpbnQgbnVtYmVyIDogYXJyKSB7CiAgICAgICAgZnJlcU1hcFtudW1iZXJdKys7CiAgICB9CiAgICBpbnQgbWF4RnJlcSA9IDA7CiAgICBpbnQgbWF4RWxlbWVudCA9IDA7CiAgICBpbnQgbWluRnJlcSA9IG51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwogICAgaW50IG1pbkVsZW1lbnQgPSAwOwogICAgZm9yIChhdXRvIGNvbnN0JiBbZWxlbWVudCwgZnJlcXVlbmN5XSA6IGZyZXFNYXApIHsKICAgICAgICBpZiAoZnJlcXVlbmN5Pm1heEZyZXEpIHsKICAgICAgICAgICAgbWF4RnJlcT1mcmVxdWVuY3k7CiAgICAgICAgICAgIG1heEVsZW1lbnQ9ZWxlbWVudDsKICAgICAgICB9CiAgICAgICAgaWYgKGZyZXF1ZW5jeTxtaW5GcmVxKSB7CiAgICAgICAgICAgIG1pbkZyZXE9ZnJlcXVlbmN5OwogICAgICAgICAgICBtaW5FbGVtZW50PWVsZW1lbnQ7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCJcbi0tLSBBbGwgZG9uZSEgSGVyZSdzIHdoYXQgSSBmb3VuZCAtLS0iPDxlbmRsOwogICAgY291dCA8PCJUaGUgbW9zdCBmcmVxdWVudCBudW1iZXIgaXMgIjw8bWF4RWxlbWVudDw8Iiwgd2hpY2ggYXBwZWFyZWQgIjw8bWF4RnJlcTw8IiB0aW1lcy4iPDxlbmRsOwogICAgY291dCA8PCJUaGUgbGVhc3QgZnJlcXVlbnQgbnVtYmVyIGlzICI8PG1pbkVsZW1lbnQ8PCIsIHdoaWNoIGFwcGVhcmVkICI8PG1pbkZyZXE8PCIgdGltZXMuIjw8ZW5kbDsKICAgIHJldHVybiAwOwp9Cgo=