#include <bits/stdc++.h>
const int MAXN = 2e5 + 5;
using namespace std;
struct info {
  int coord;
  bool taxi;
} v[MAXN];
int n, m, dist[MAXN], man[MAXN], fr[MAXN];
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n + m; i++) {
    cin >> v[i].coord;
    dist[i] = 2e9;
  }
  for (int i = 1; i <= n + m; i++) cin >> v[i].taxi;
  int cur = -1;
  for (int i = 1; i <= n + m; i++) {
    if (v[i].taxi) cur = i;
    if (!v[i].taxi && cur != -1) {
      dist[i] = v[i].coord - v[cur].coord;
      man[i] = cur;
    }
  }
  cur = -1;
  for (int i = n + m; i >= 1; i--) {
    if (v[i].taxi) cur = i;
    if (!v[i].taxi && cur != -1) {
      if (v[cur].coord - v[i].coord < dist[i]) {
        dist[i] = v[cur].coord - v[i].coord;
        man[i] = cur;
      }
    }
  }
  for (int i = 1; i <= n + m; i++)
    if (!v[i].taxi) fr[man[i]]++;
  for (int i = 1; i <= n + m; i++) {
    if (v[i].taxi) cout << fr[i] << " ";
  }
  return 0;
}
