#include<bits/stdc++.h>
#define int long long
#define MN 200010
using namespace std;
int n, m, top, tr[MN], rp[MN], ans[MN], qwq;
struct dat { int w, a, t, cnt; } p[MN];
void add(int x,int v) {
for( ; x<=n; x+=x&-x) tr[x]+=v;
}
int ask(int x) {
int res=0;
for( ; x; x-=x&-x) res+=tr[x];
return res;
}
bool byt(dat ix,dat iy) {
return ix.t>iy.t;
}
bool bya(dat ix,dat iy) {
return ix.a<iy.a;
}
void solve(int l,int r) {
if(l>=r) return;
int mid=(l+r)>>1;
solve(l,mid);
solve(mid+1,r);
sort(p+l,p+mid+1,bya);
sort(p+mid+1,p+r+1,bya);
int j=l, i=mid+1;
for( ; i<=r; ++i) {
while(j<=mid&&p[j].a<p[i].a)
add(p[j++].w,1);
p[i].cnt+=ask(n)-ask(p[i].w);
}
while(l<=--j) add(p[j].w,-1);
j=mid, i=mid+1;
for( ; i<=r; ++i) {
while(j>=l&&p[j].a>p[i].a)
add(p[j--].w,1);
p[i].cnt+=ask(p[i].w);
}
while(++j<=mid) add(p[j].w,-1);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=1; i<=n; ++i) {
cin >> p[i].a;
rp[p[i].a]=i;
p[i].w=i, p[i].t=n;
qwq+=ask(n)-ask(p[i].a);
add(p[i].a,1);
}
for(int i=1; i<=n; ++i)
add(p[i].a,-1);
for(int i=1; i<=m; ++i) {
int x;
cin >> x;
x=rp[x];
p[x].t=i;
}
sort(p+1,p+1+n,byt);
solve(1,n);
for(int i=1; i<=n; ++i)
ans[p[i].t]=p[i].cnt;
for(int i=1; i<=m; ++i) {
cout << qwq << endl;
qwq-=ans[i];
}
return 0;
}