#define rep(i, l, r) for (auto i = (l); i < (r); i++) #define chmin(dest, src) if ((dest) > (src)) dest = (src) #define chmax(dest, src) if ((dest) < (src)) dest = (src) #include #include #include using namespace std; #include using namespace atcoder; using ll = int; int main() { int M, N; cin >> M >> N; vector A(N); rep(i, 0, N) cin >> A[i]; vector B(M); rep(i, 0, M) cin >> B[i]; rep(k, 1, M + 1) { mcf_graph graph(N + M + 2); int s = N + M; int t = N + M + 1; rep(i, 0, N) { graph.add_edge(s, i, 1, 0); } rep(i, 0, N) rep(j, 0, M) { graph.add_edge(i, N + j, 1, abs(A[i] - B[j])); } rep(i, 0, M) { graph.add_edge(N + i, t, k, 0); } auto result = graph.flow(s, t); auto cost = result.second; cout << cost << endl; } return 0; }