要点:商品名会有相同的
import java.util.Scanner;
//京东编程题——购物单预算的最大值和最小值
/**输入
6 5//商品总数 要购买的商品数
2 3 5 10 4 1//所有商品的价格
ff//商品名
gg
ff
dd
dd
*/
public class test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int m = input.nextInt();
int[] p = new int[n];
for(int i = 0; i < n; i++){
p[i] = input.nextInt();
}
String[] th = new String[m];
for(int i = 0; i < m; i++){
th[i] = input.next();
}
//从小到大排序
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
if(p[i] > p[j]){
int t = p[i];
p[i] = p[j];
p[j] = t;
}
}
}
int[] a = new int[m];
for(int i = 0; i < m; i++){
if("".equals(th[i])){
a[i]=0;
}else{
a[i] = 1;
for(int j = i + 1; j < m; j++){
if(th[i].equals(th[j])){
a[i]++;
th[j] = "";
}
}
}
}
//从大排序
int c = 0;
for(int i = 0; i < m; i++){
for(int j = i + 1; j < m; j++){
if(a[i] < a[j]){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(int i = 0; i < m; i++){
if(a[i] != 0){
c++;
}
}
int num = 0;
int min = 0;
for(int i = 0; i < c; i++){
min += p[i] * a[num];
num++;
}
int max = 0;
num = 0;
for(int i = n - 1; i >= n - c; i--){
max += p[i] * a[num];
num++;
}
System.out.println(min);
System.out.println(max);
}
}