#include<map>
#include<set>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
struct CmpByValue {
bool operator()(const pair<string, int> & lhs, const pair<string, int> & rhs)
{
return lhs.second > rhs.second;
}//从大到小
};
int main(){
int n1,n2;
while (cin>>n1>>n2){
int l1 = 0, l2 = 0;
int t;
vector<int> m1 = {};
for (int i = 0; i < n1; i++){
cin >> t;
m1.push_back(t);
}
sort(m1.begin(), m1.end());
string s;
map<string, int> m2 = {};
for (int i = 0; i < n2; i++){
cin >> s;
m2[s]++;
}
vector<pair<string, int> > vec(m2.begin(), m2.end());//把map中元素转存到vector中
sort(vec.begin(), vec.end(), CmpByValue());
int j = 0;
for (auto i = vec.begin(); i != vec.end(); i++){
l1 += (i->second)*m1[j];//显然i->second为value,i->first为key
l2 += (i->second)*m1[n1-1-j];
j++;
}
cout << l1 << " " << l2 << endl;
}
return 0;
}
map默认情况下按照key排序!
涉及到的map按value排序问题
最新推荐文章于 2023-12-29 09:25:58 发布