Advertisement
Dzham

art

Nov 26th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. #include<algorithm>
  2. #include<iostream>
  3. #include<string>
  4. #include<math.h>
  5. #include<vector>
  6. #include<map>
  7. #include<deque>
  8.  
  9. using namespace std;
  10.  
  11. bool pairCompare(const pair<string, int>& pair1, const pair<string, int>& pair2) {
  12. if (pair1.second == pair2.second) {
  13. return pair1.first < pair2.first;
  14. }
  15. return pair1.second > pair2.second;
  16. }
  17.  
  18. string make_key(deque<string>& key) {
  19. string result;
  20. for (int i = 0; i < key.size() - 1; i++) {
  21. result.append(key[i]);
  22. result.append(" ");
  23. }
  24. result.append(key.back());
  25. return result;
  26. }
  27.  
  28. int main() {
  29. int N, M;
  30. deque<string> key;
  31. map<string, int> result;
  32. vector<pair<string, int>> result1;
  33. string word;
  34. cin >> M >> N;
  35. if (N <= M) {
  36. for (int i = 0; i < N; i++) {
  37. cin >> word;
  38. key.push_back(word);
  39. }
  40. string preres = make_key(key);
  41. result[preres] = 1;
  42. for (int i = N; i < M; i++) {
  43. cin >> word;
  44. key.push_back(word);
  45. key.pop_front();
  46. string preres = make_key(key);
  47. if (result.find(preres) == result.end()) {
  48. result[preres] = 1;
  49. } else {
  50. result[preres] += 1;
  51. }
  52. }
  53. for (const auto &myPair : result) {
  54. pair<string, int> str;
  55. str.first = myPair.first;
  56. str.second = myPair.second;
  57. result1.push_back(str);
  58. }
  59. sort(result1.begin(), result1.end(), pairCompare);
  60. for (int i = 0; i < result1.size(); i++) {
  61. cout << result1[i].first << " - " << result1[i].second << '\n';
  62. }
  63. } else {
  64. for (int i = 0; i < M; i++) {
  65. cin >> word;
  66. }
  67. }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement