Advertisement
ibragimova_mariam

С13 COPP

Nov 21st, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <set>
  6. #include <map>
  7. #include <iterator>
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. int n;
  14. cin >> n;
  15.  
  16. int m;
  17. cin >> m;
  18.  
  19. vector<int> list;
  20.  
  21. for(int i = 0; i < n; i ++) {
  22. int a;
  23. cin >> a;
  24. list.push_back(a);
  25. }
  26.  
  27. sort(list.begin(), list.end());
  28.  
  29. map<string, int> fruits;
  30.  
  31. for(int i = 0; i < m; i ++) {
  32. string s;
  33. cin >> s;
  34. auto fruitIter = fruits.find(s);
  35. if(fruitIter != fruits.end()) {
  36. //cout << "Found " << fruitIter->first << " " << fruitIter->second << endl;
  37. fruitIter->second = fruitIter->second + 1;
  38. }
  39. else {
  40. //cout << "Not found" << endl;
  41. fruits[s] = 1;
  42. }
  43. }
  44.  
  45. vector<int> countFruits;
  46.  
  47. for(auto itMap = fruits.begin(); itMap != fruits.end(); itMap++)
  48. {
  49. //cout << itMap->second << endl;
  50. countFruits.push_back(itMap->second);
  51. }
  52.  
  53. sort(countFruits.begin(), countFruits.end());
  54.  
  55. int minSum = 0, maxSum = 0;
  56.  
  57. m = countFruits.size();
  58.  
  59. for(int i = 0; i < m; i ++) {
  60. minSum += list.at(i) * countFruits.at(m - 1 -i);
  61. }
  62.  
  63. cout << minSum << " " << maxSum;
  64.  
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement