/* ID: espr1t TASK: KEYWORDS: */ #include #include #include #include using namespace std; FILE *in; FILE *out; const int MAX = 5005; int n, m; int cnt[MAX], price[MAX]; string toString(long long num) { if (num == 0) return "0"; string sign = ""; if (num < 0) sign = "-", num = -num; string ret; while (num) ret += (num % 10 + '0'), num /= 10; reverse(ret.begin(), ret.end()); return sign + ret; } int main(void) { in = stdin; out = stdout; in = fopen("toys.in", "rt"); out = fopen("toys.out", "wt"); fscanf(in, "%d %d", &n, &m); for (int i = 0; i < n; i++) fscanf(in, "%d", &cnt[i]); sort(cnt, cnt + n), reverse(cnt, cnt + n); for (int i = 0; i < m; i++) fscanf(in, "%d", &price[i]); sort(price, price + m), reverse(price, price + m); long long ans = 0; for (int i = 0; i < n; i++) ans += cnt[i] * price[i]; fprintf(out, "%s\n", toString(ans).c_str()); return 0; }