Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <algorithm>
  2. #include <codecvt>
  3. #include <fstream>
  4. #include <iostream>
  5. #include <locale>
  6. #include <string>
  7. #include <tuple>
  8. #include <unordered_map>
  9. #include <vector>
  10.  
  11. using namespace std;
  12.  
  13. int main(int argc, const char* argv[]) try {
  14. locale ru(locale(argc>3 ? argv[3] : ""), new std::codecvt_utf8<wchar_t>);
  15. ios_base::sync_with_stdio(false);
  16.  
  17. wifstream inf;
  18. if (argc>1) inf.open(argv[1]), wcin.rdbuf(inf.rdbuf());
  19. wcin.imbue(ru);
  20.  
  21. wofstream outf;
  22. if (argc>2) outf.open(argv[2]), wcout.rdbuf(outf.rdbuf());
  23. wcout.imbue(ru);
  24.  
  25. unordered_map<wstring, int> dict;
  26. for(wstring s; wcin >> s;) {
  27. transform(begin(s),end(s), begin(s),
  28. [&ru](auto c) { return tolower(c, ru);});
  29. s.erase(remove_if(begin(s),end(s),
  30. [&ru](auto c) { return !isalpha(c, ru);}),
  31. s.end());
  32. if (!s.empty()) --dict[s];
  33. }
  34.  
  35. vector<pair<wstring,int>> result(begin(dict),end(dict));
  36. sort(begin(result),end(result),
  37. [](auto a, auto b) {
  38. return tie(a.second,a.first) < tie(b.second,b.first);
  39. });
  40.  
  41. for(auto& i : result) wcout << -i.second << " " << i.first << "\n";
  42. return 0;
  43. } catch(exception& e) { cout << e.what() << endl; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement