
Untitled
By: a guest on
May 6th, 2012 | syntax:
None | size: 1.42 KB | hits: 13 | expires: Never
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <cassert>
#include <algorithm>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
using namespace std;
#define DB(x) { cerr << #x << ": " << x << " "; }
#define forn(i, n) for (int i = 0; i < (int)(n); ++i)
#define sqr(x) ((x)*(x))
typedef long double ld;
typedef long long ll;
typedef vector <int> vi;
typedef pair <int,int> pii;
const ld PI = acos(-1.0);
const int N = 1010;
int n, k;
double prices[N], disc[N], c[N][N];
void precalc() {
forn(i, N) {
c[i][0] = c[i][i] = 1;
for (int j = 1; j < i; j++)
c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
}
}
void solve() {
cin >> n >> k;
forn(i, n) cin >> prices[i];
sort(prices, prices + n);
forn(i, k) cin >> disc[i];
sort(disc, disc + k);
double res = 0;
forn(i, n) forn(j, k) {
if (j > i) continue;
if (k - j > n - i) continue;
double add = c[i][j] * c[n - i - 1][k - j - 1] * disc[j] * prices[i];
res += add;
//cerr << i << " " << j << " " << add << endl;
}
res /= c[n][k] * 100;
cout << fixed << setprecision(3) << res << endl;
}
int main() {
//freopen("in", "r", stdin);
//freopen("out", "w", stdout);
ios_base::sync_with_stdio(0);
precalc();
int T; cin >> T; forn(t, T) solve();
return 0;
}