#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int N, Q; while (cin >> N >> Q) { vector h(N), q(Q), v; for (int i = 0; i < N; i++) { scanf("%d", &h[i]); v.push_back(h[i]); } for (int j = 0; j < Q; j++) { scanf("%d", &q[j]); v.push_back(q[j]); } sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); int n = v.size(); vector > x(n); for (int i = 0; i < N; i++) { h[i] = lower_bound(v.begin(), v.end(), h[i]) - v.begin(); x[h[i]].push_back(i); } vector a(n, true); vector ans(n); int z = 1; for (int k = 0; k < n; k++) { for (int l = 0; l < x[k].size(); l++) { int i = x[k][l]; a[i] = false; int cnt = 0; if (i - 1 >= 0 && a[i - 1]) cnt++; if (i + 1 < N && a[i + 1]) cnt++; if (cnt == 0) z--; if (cnt == 2) z++; } ans[k] = z; } for (int j = 0; j < Q; j++) { q[j] = lower_bound(v.begin(), v.end(), q[j]) - v.begin(); printf("%d\n", ans[q[j]]); } } }