fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. unordered_map<string,vector<string>>Favorite_Genres(unordered_map<string,vector<string>>userSongs,unordered_map<string,vector<string>>songGenres)
  5. {
  6. unordered_map<string,string>song_to_song;
  7. unordered_map<string,unordered_map<string,int>>user_to_song;
  8. unordered_map<string,vector<string>>res;
  9. for(auto a:songGenres)
  10. {
  11. for(auto b:a.second)
  12. {
  13. song_to_song[b]=a.first;
  14. }
  15. }
  16. for(auto a:userSongs)
  17. {
  18. int mx=INT_MIN;
  19. for(auto b:a.second)
  20. {
  21. user_to_song[a.first][song_to_song[b]]++;
  22. if(mx<user_to_song[a.first][song_to_song[b]])
  23. {
  24. mx=user_to_song[a.first][song_to_song[b]];
  25. res[a.first].clear();
  26. res[a.first].push_back(song_to_song[b]);
  27. }
  28. else if(mx==user_to_song[a.first][song_to_song[b]])
  29. {
  30. res[a.first].push_back(song_to_song[b]);
  31. }
  32. }
  33. }
  34. return res;
  35. }
  36. int main() {
  37. // your code goes here
  38. unordered_map<string,vector<string>> userSongs = {
  39. {"David", {"song1", "song2", "song3", "song4", "song8"}},
  40. {"Emma", {"song5", "song6", "song7"}}
  41. };
  42. unordered_map<string,vector<string>>songGenres = {
  43. {"Rock", {"song1", "song3"}},
  44. {"Dubstep", {"song7"}},
  45. {"Techno", {"song2", "song4"}},
  46. {"Pop", {"song5", "song6"}},
  47. {"Jazz", {"song8", "song9"}}
  48. };
  49. auto res=Favorite_Genres(userSongs,songGenres);
  50. for(auto a:res)
  51. {
  52. cout<<a.first<<" ";
  53. for(auto b:a.second)
  54. {
  55. cout<<b<<" ";
  56. }
  57. cout<<endl;
  58. }
  59. return 0;
  60. }
Success #stdin #stdout 0s 4536KB
stdin
Standard input is empty
stdout
David Rock Techno 
Emma Pop