#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Fenwick {
    int n;
    vector<ll> f;
    Fenwick(int _n): n(_n), f(n+1,0) {}
    void update(int i, ll v=1){
        for(; i<=n; i+=i&-i) f[i] += v;
    }
    ll query(int i){
        ll s=0;
        for(; i>0; i-=i&-i) s += f[i];
        return s;
    }
    ll query(int l, int r){
        if(l>r) return 0;
        return query(r) - query(l-1);
    }
};
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, k;
    long q;
    cin >> n >> k >> q;
    vector<int> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<vector<int>> pos(k+1);
    for(int i=0;i<n;i++){
        pos[a[i]].push_back(i);
    }
    Fenwick fw(k);
    ll inv = 0;
    for(int i=0;i<n;i++){
        inv += fw.query(a[i]+1, k);
        fw.update(a[i], 1);
    }
    vector<int> p(k+1), r(k+1);
    for(int i=1;i<=k;i++){
        p[i] = i;
        r[i] = i;
    }
    while(q--){
        int j;
        cin >> j;             
        int x = p[j], y = p[j+1];
        ll Cxy = 0, Cyx = 0;
        auto &vx = pos[x];
        auto &vy = pos[y];
        if(vx.size() < vy.size()){
            for(int idx: vx){
                Cxy += (ll)(vy.end() - upper_bound(vy.begin(), vy.end(), idx));
            }
            for(int idx: vy){
                Cyx += (ll)(vx.end() - upper_bound(vx.begin(), vx.end(), idx));
            }
        } else {
            for(int idx: vy){
                Cyx += (ll)(vx.end() - upper_bound(vx.begin(), vx.end(), idx));
            }
            for(int idx: vx){
                Cxy += (ll)(vy.end() - upper_bound(vy.begin(), vy.end(), idx));
            }
        }
        inv += Cxy - Cyx;
        swap(p[j], p[j+1]);
        r[x] = j+1; 
        r[y] = j;
        cout << inv << "\n";
    }
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |