Advertisement
Spocoman

02. SoftUni Karaoke

Feb 16th, 2024
850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. #include <vector>
  5. #include <set>
  6. #include <map>
  7.  
  8. using namespace std;
  9.  
  10. vector<string> string_split(string& str, string sep) {
  11.     vector<string> v;
  12.     while (!str.empty()) {
  13.         size_t index = str.find(sep);
  14.         v.push_back(str.substr(0, index));
  15.         str.erase(0, index + sep.size());
  16.     }
  17.     return v;
  18. }
  19.  
  20. bool is_find(vector<string>& v, string el) {
  21.     return find(v.begin(), v.end(), el) != v.end();
  22. }
  23.  
  24. int main() {
  25.     string line;
  26.  
  27.     getline(cin, line);
  28.     vector<string> participants = string_split(line, ", ");
  29.  
  30.     getline(cin, line);
  31.     vector<string> songs = string_split(line, ", ");
  32.  
  33.     map<string, set<string>> info;
  34.  
  35.     set<int> valueSize;
  36.  
  37.     getline(cin, line);
  38.  
  39.     while (line != "dawn") {
  40.         vector<string> tokens = string_split(line, ", ");
  41.         string participant = tokens[0], song = tokens[1], award = tokens[2];
  42.  
  43.         if (is_find(participants, participant) && is_find(songs, song)) {      
  44.             info[participant].insert(award);
  45.             valueSize.insert(info[participant].size());
  46.         }
  47.         getline(cin, line);
  48.     }
  49.  
  50.     auto it = valueSize.end();
  51.  
  52.     if (info.size() > 0) {
  53.         while (info.size() != 0) {
  54.             int maxSize = *--it;
  55.  
  56.             for (auto& i : info) {
  57.                 if (i.second.size() == maxSize) {
  58.                     cout << i.first << ": " << i.second.size() << " awards" << endl;
  59.                     for (auto& v : i.second) {
  60.                         cout << "--" << v << endl;
  61.                     }
  62.                     info.erase(i.first);
  63.                     break;
  64.                 }
  65.             }
  66.         }
  67.     }
  68.     else {
  69.         cout << "No awards\n";
  70.     }
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement