Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <unordered_map>
- #include <vector>
- #include <algorithm>
- #include <string>
- using namespace std;
- inline void split_vec(std::vector< pair<int,std::string> > &Expressions, std::string &str){
- unsigned int str_sz = str.size();
- unordered_map<std::string,int> EX;
- if(str.size() > 0){
- std::string Buffer = "";
- for(auto &I : str)
- {
- if(I != ' '){
- Buffer += I;
- }else{
- EX[Buffer]++;
- Buffer.clear();
- }
- }
- EX[Buffer]++;
- }
- for(auto &I : EX)
- Expressions.emplace_back(I.second,I.first);
- }
- int main()
- {
- std::string inp;
- getline(cin, inp);
- vector< pair<int,std::string> > E;
- split_vec(E,inp);
- sort(E.begin(),E.end());
- vector< vector< pair<std::string,int> > > Sorted;
- vector< pair<std::string,int> > Buff;
- int GroupKey = E[0].first;
- for(auto &I : E){
- if(GroupKey == I.first){
- Buff.emplace_back(I.second,I.first);
- }else{
- GroupKey = I.first;
- Sorted.emplace_back(Buff);
- Buff.clear();
- Buff.emplace_back(I.second,I.first);
- }
- }
- Sorted.emplace_back(Buff);
- for(auto &I : Sorted)
- sort(I.begin(),I.end());
- for(int I = Sorted.size()-1; I >= 0; I--)
- for(auto &K : Sorted[I])
- cout << K.first << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement