#include <bits/stdc++.h>
using namespace std;
int n,q,b,indeks,medijana,v;
bool postoji,radi;
vector <int> a,c;
int getClosest(int val1, int val2,
			int target, int mid)
{
	if (target - val1 >= val2 - b){
        if(a[mid]==b)postoji=true;
        return mid;
	}

	else{
        if(a[mid-1]==b)postoji=true;
        return mid-1;
	}
}
int findClosest(int n, int b)
{
	if (b <= a[0])
		return 0;
	if (b >= a[n - 1])
		return n - 1;
	int i = 0, j = n, mid = 0;
	while (i < j) {
		mid = (i + j) / 2;

		if (a[mid] == b){
            postoji=true;
            return mid;
		}

		if (b < a[mid]) {
			if (mid > 0 && b > a[mid - 1])
				return getClosest(a[mid - 1],
								a[mid], b, mid);
			j = mid;
		}
		else {
			if (mid < n - 1 && b < a[mid + 1])
				return getClosest(a[mid],
                a[mid + 1], b, mid);
			i = mid + 1;
		}
	}
	return mid;
}
bool valja(int broj){
    for(int i=0; i<broj; i++){
        c.insert(c.begin()+indeks+i,b);
        if(c[c.size()/2]==b){
          //cout << "i je " << i+1 << endl;
          return true;
        }
        /*
        else{
            for(int i=0; i<c.size(); i++)cout << c[i] << " ";
            cout << endl;
        }
        */
      }
      return false;
}
int BPR(){
 int resenje;
 int left=0;
 int right=250000;
 while (left<=right){
    c=a;
   int srednji=(left+right)/2;
   //cout << "srednji je " << srednji << endl;
    if(valja(srednji)){
    resenje=srednji;
    right = srednji - 1;
}
else left = srednji + 1;
 }
 return resenje;
}
int main(){
  cin >> n >> q;
  for(int i=1; i<=n; i++){
    cin >> v;
    a.push_back(v);
  }
  sort(a.begin(),a.end());
  medijana=n/2;
  for(int i=0; i<q; i++){
    c=a;
    postoji=false;
    cin >> b;
    indeks=(findClosest(n, b));
    //cout << "INDEKS JE " << indeks << endl;
    if(indeks==medijana and postoji){
      cout << "0\n";
      continue;
    }
    if(a[indeks]<b)indeks++;
    cout << BPR() << endl;
    }
  return 0;
}