#include #include int main (void) { int K, k; int p, n, i, j, r; float s[501], f[501]; float pi[501][501]; float t; FILE *in = fopen ("skating.in", "r"), *out = fopen("skating.out", "w"); fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { fprintf (out, "Data Set %d:\n", k); fscanf (in, "%d %d\n", &p, &n); for (j = 1; j <= p; j ++) fscanf (in, "%f\n", &f[j]); for (i = 1; i <= n; i ++) fscanf (in, "%f\n", &s[i]); for (i = 1; i <= n; i ++) { r = i; for (j = i+1; j <= n; j ++) if (s[j] < s[r]) r = j; t = s[r]; s[r] = s[i]; s[i] = t; } for (i = 1; i <= p; i ++) { r = i; for (j = i+1; j <= p; j ++) if (f[j] < f[r]) r = j; t = f[r]; f[r] = f[i]; f[i] = t; } for (i = 0; i <= n; i ++) pi[0][i] = 0.0; for (j = 1; j <= p; j ++) pi[j][0] = 100000000.0; for (j = 1; j <= p; j ++) for (i = 1; i <= n; i ++) { pi[j][i] = 100000000.0; t = s[i] - f[j]; if (t < 0) t = t*t*t*t; for (r = 0; r < i; r ++) if (pi[j-1][r] + t < pi[j][i]) pi[j][i] = pi[j-1][r] + t; } t = 10000000000.0; for (i = 1; i <= n; i ++) if (pi[p][i] < t) t = pi[p][i]; fprintf (out, "%.2f\n\n", t); fscanf (in, "\n"); } fclose (in); fclose (out); return 0; }