#include <bits/stdc++.h>
#define int long long
#define iostream() ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
using namespace std;
const int maxn = 1e6+7;
const int MAXN = maxn / 2;
int n,m,a[maxn],tmp,ff,maxsum,minsum;
string s[maxn];
int f()
{
int cnt = 0;
sort(s,s + m);
for (int i = 0; i < m - 1; i++)
if (s[i] != s[i + 1])
cnt++;
return cnt;
} //找有多少种水果
signed main()
{
//输入与输出
iostream();
cin >> n >> m;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < m; i++) cin >> s[i];
ff = f();
int fruit[ff];
sort(a,a + n);
//水果数量名称统计
for (int i = 0; i < m - 1; i++)
{
if (s[i] == s[i + 1])
fruit[tmp]++;
else tmp++;
}
sort(fruit,fruit + ff);
//求最小值
for (int i = 0; i < ff; i++)
minsum += fruit[i] * a[i];
cout << minsum << '\n';
//数组翻转
for (int i = 0,j = n - 1; i <= n / 2,j >= n / 2; i++,j--)
swap(a[i],a[j]);
for (int i = 0,j = ff - 1; i <= ff / 2,j >= ff / 2; i++,j--)
swap(s[i],s[j]);
//求最大值
for (int i = 0; i < ff; i++)
maxsum += fruit[i] * a[i];
cout << maxsum << '\n';
return 0;
}
自我感觉还很有道理,没想到交上去全错