1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <bits/stdc++.h>
#define MAX_N 100007
using namespace std;

int kol[MAX_N][2];
bool odw[MAX_N][2];
queue<pair<int, int>> q;

void bfs(int l, int r, int n){
	int w, b;
	while(!q.empty()){
		w = q.front().first;
		b = q.front().second;
		if(w == 0){
			if(!odw[n-1][b] && kol[n-1][b] >= l && kol[n-1][b] <= r){
				odw[n-1][b] = 1;
				q.push({n-1, b});
			}
		}else{
			if(!odw[w-1][b] && kol[w-1][b] >= l && kol[w-1][b] <= r){
				odw[w-1][b] = 1;
				q.push({w-1, b});
			}
		}
		if(w == n-1){
			if(!odw[0][b] && kol[0][b] >= l && kol[0][b] <= r){
				odw[0][b] = 1;
				q.push({0, b});
			}
		}else{
			if(!odw[w+1][b] && kol[w+1][b] >= l && kol[w+1][b] <= r){
				odw[w+1][b] = 1;
				q.push({w+1, b});
			}
		}
		if(b){
			if(!odw[w][0] && kol[w][0] >= l && kol[w][0] <= r){
				odw[w][0] = 1;
				q.push({w, 0});
			}
		}else{
			if(!odw[w][1] && kol[w][1] >= l && kol[w][1] <= r){
				odw[w][1] = 1;
				q.push({w, 1});
			}
		}
		q.pop();
	}
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n, k;
	cin >> n >> k;
	for(int i = 0; i < n; i++) cin >> kol[i][0];
	for(int i = 0; i < n; i++) cin >> kol[i][1];
	int wyniki[k+1];
	for(int i = 1; i <= k; i++) wyniki[i] = 0;
	int teraz;
	wyniki[1] = 2*n;
	for(int i = 1; i < 2*n; i++){
		for(int j = i+1; j <= 2*n; j++){
			teraz = 0;
			for(int l = 0; l < n; l++){
				if(kol[l][0] >= i && kol[l][0] <= j && !odw[l][0]){
					teraz++;
					if(teraz > k) break;
					q.push({l, 0});
					bfs(i, j, n);
				}else if(kol[l][1] >= i && kol[l][1] <= j && !odw[l][1]){
					teraz++;
					if(teraz > k) break;
					q.push({l, 1});
					bfs(i, j, n);
				}
			}
			if(teraz <= k) wyniki[teraz]++;
			for(int l = 0; l < n; l++){
				odw[l][0] = 0;
				odw[l][1] = 0;
			}
		}
	}
	for(int i = 1; i <= k; i++) cout << wyniki[i] << " ";
}