Untitled
unknown
c_cpp
2 years ago
1.1 kB
8
Indexable
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
bool sortByVal(const pair<int, pair<int, int>>& a, const pair<int, pair<int, int>>& b) {
if(a.second.first == b.second.first) {
return a.second.second < b.second.second;
}
return a.second.first > b.second.first;
}
int main() {
int num;
cin >> num;
vector<int> arr(num);
unordered_map<int, pair<int, int>> frequencyMap; // <element, <frequency, first_index>>
for(int i = 0; i < num; ++i) {
cin >> arr[i];
if(frequencyMap.find(arr[i]) == frequencyMap.end()) {
frequencyMap[arr[i]] = make_pair(1, i);
} else {
frequencyMap[arr[i]].first++;
}
}
vector<pair<int, pair<int, int>>> freqList(frequencyMap.begin(), frequencyMap.end());
sort(freqList.begin(), freqList.end(), sortByVal);
for(const auto& item: freqList) {
for(int j = 0; j < item.second.first; ++j) {
cout << item.first << " ";
}
}
cout << endl;
return 0;
}
Editor is loading...