#include <bits/stdc++.h>
using namespace std;
#define ms(x,a) memset(x,a,sizeof x)
typedef long long ll;
const int mod=1e9+7, inf=0x3f3f3f3f, MAXN=1e5+1, MAXQ=2e6+1, SZ=5000;
int n, k, q;
int arr[MAXN], tar[MAXN];
int a[MAXQ], b[MAXQ];
ll ans[MAXQ], bad[MAXQ];
int id[MAXN];
set<int> ss;
int cnt[SZ+10];
ll mp[SZ+10][SZ+10];
struct Fenwick{
int a[MAXN];
void ins(int i, int v=1){ for (;i<MAXN;i+=i&-i) a[i]+=v; }
int qry(int i){
ll ret=0;
for (;i;i-=i&-i) ret+=a[i];
return ret;
}
} bit;
void build(){
for (int bl=0;bl*SZ<=n;++bl){
int l=bl*SZ, r=min(n,(bl+1)*SZ-1);
for (int i=l;i<=r;++i) ss.insert(arr[i]);
int poi=0;
for (int x:ss) id[x]=++poi;
for (int i=l;i<=r;++i){
arr[i]=id[arr[i]];
for (int j=1;j<=poi;++j){
mp[arr[i]][j]+=cnt[j];
}
cnt[arr[i]]++;
}
// compute answers
for (int i=1;i<=2*q;++i){
int aa=id[a[i]];
int bb=id[b[i]];
if (aa&&bb) ans[i]+=mp[aa][bb];
if (aa) ans[i]+=bad[i]*cnt[aa];
if (bb) bad[i]+=cnt[bb];
}
for (int i=1;i<=poi;++i) ms(mp[i],0);
// resetting
ss.clear(), ms(id,0);
ms(cnt,0);
}
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cin >> n >> k >> q;
for (int i=1;i<=n;++i) cin >> arr[i];
iota(tar+1,tar+1+n,1);
for (int i=1;i<=q;++i){
int j; cin >> j;
a[i*2-1]=tar[j];
b[i*2-1]=tar[j+1];
a[i*2]=b[i*2-1];
b[i*2]=a[i*2-1];
swap(tar[j],tar[j+1]);
}
ll tot=0;
for (int i=1;i<=n;++i){
bit.ins(arr[i]);
tot+=i-bit.qry(arr[i]);
}
build();
for (int i=1;i<=q;++i){
tot-=ans[i*2-1];
tot+=ans[i*2];
// cout << cntinv(a[i],b[i]) << " " << cntinv(b[i],a[i]) << '\n';
cout << tot << '\n';
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
844 KB |
Output is correct |
2 |
Correct |
3 ms |
1228 KB |
Output is correct |
3 |
Correct |
3 ms |
1228 KB |
Output is correct |
4 |
Correct |
4 ms |
2124 KB |
Output is correct |
5 |
Correct |
5 ms |
5068 KB |
Output is correct |
6 |
Correct |
17 ms |
20748 KB |
Output is correct |
7 |
Correct |
28 ms |
40008 KB |
Output is correct |
8 |
Correct |
84 ms |
126768 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
1620 KB |
Output is correct |
2 |
Correct |
17 ms |
1740 KB |
Output is correct |
3 |
Correct |
30 ms |
5564 KB |
Output is correct |
4 |
Correct |
229 ms |
40640 KB |
Output is correct |
5 |
Correct |
791 ms |
126916 KB |
Output is correct |
6 |
Correct |
1006 ms |
157280 KB |
Output is correct |
7 |
Correct |
1192 ms |
189396 KB |
Output is correct |
8 |
Correct |
1276 ms |
194252 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
380 ms |
59676 KB |
Output is correct |
2 |
Correct |
378 ms |
59716 KB |
Output is correct |
3 |
Correct |
401 ms |
60568 KB |
Output is correct |
4 |
Correct |
436 ms |
63556 KB |
Output is correct |
5 |
Correct |
562 ms |
75244 KB |
Output is correct |
6 |
Correct |
611 ms |
79180 KB |
Output is correct |
7 |
Correct |
630 ms |
79196 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
844 KB |
Output is correct |
2 |
Correct |
3 ms |
1228 KB |
Output is correct |
3 |
Correct |
3 ms |
1228 KB |
Output is correct |
4 |
Correct |
4 ms |
2124 KB |
Output is correct |
5 |
Correct |
5 ms |
5068 KB |
Output is correct |
6 |
Correct |
17 ms |
20748 KB |
Output is correct |
7 |
Correct |
28 ms |
40008 KB |
Output is correct |
8 |
Correct |
84 ms |
126768 KB |
Output is correct |
9 |
Correct |
14 ms |
1620 KB |
Output is correct |
10 |
Correct |
17 ms |
1740 KB |
Output is correct |
11 |
Correct |
30 ms |
5564 KB |
Output is correct |
12 |
Correct |
229 ms |
40640 KB |
Output is correct |
13 |
Correct |
791 ms |
126916 KB |
Output is correct |
14 |
Correct |
1006 ms |
157280 KB |
Output is correct |
15 |
Correct |
1192 ms |
189396 KB |
Output is correct |
16 |
Correct |
1276 ms |
194252 KB |
Output is correct |
17 |
Correct |
380 ms |
59676 KB |
Output is correct |
18 |
Correct |
378 ms |
59716 KB |
Output is correct |
19 |
Correct |
401 ms |
60568 KB |
Output is correct |
20 |
Correct |
436 ms |
63556 KB |
Output is correct |
21 |
Correct |
562 ms |
75244 KB |
Output is correct |
22 |
Correct |
611 ms |
79180 KB |
Output is correct |
23 |
Correct |
630 ms |
79196 KB |
Output is correct |
24 |
Correct |
786 ms |
98604 KB |
Output is correct |
25 |
Correct |
1182 ms |
132600 KB |
Output is correct |
26 |
Correct |
1560 ms |
185480 KB |
Output is correct |
27 |
Correct |
1569 ms |
215992 KB |
Output is correct |
28 |
Correct |
1572 ms |
234168 KB |
Output is correct |
29 |
Correct |
1582 ms |
247632 KB |
Output is correct |
30 |
Correct |
1624 ms |
251968 KB |
Output is correct |
31 |
Correct |
1661 ms |
251992 KB |
Output is correct |
32 |
Correct |
988 ms |
166520 KB |
Output is correct |
33 |
Correct |
595 ms |
75360 KB |
Output is correct |
34 |
Correct |
615 ms |
79172 KB |
Output is correct |
35 |
Correct |
678 ms |
83036 KB |
Output is correct |
36 |
Correct |
1028 ms |
98656 KB |
Output is correct |
37 |
Correct |
1677 ms |
130496 KB |
Output is correct |
38 |
Correct |
1777 ms |
153468 KB |
Output is correct |
39 |
Correct |
1676 ms |
251844 KB |
Output is correct |
40 |
Correct |
1477 ms |
225848 KB |
Output is correct |
41 |
Correct |
1423 ms |
213488 KB |
Output is correct |
42 |
Correct |
1124 ms |
163116 KB |
Output is correct |
43 |
Correct |
1146 ms |
166032 KB |
Output is correct |
44 |
Correct |
1092 ms |
160292 KB |
Output is correct |
45 |
Correct |
1094 ms |
161680 KB |
Output is correct |
46 |
Correct |
1555 ms |
219240 KB |
Output is correct |
47 |
Correct |
1492 ms |
193608 KB |
Output is correct |
48 |
Correct |
1429 ms |
118684 KB |
Output is correct |
49 |
Correct |
1653 ms |
131452 KB |
Output is correct |
50 |
Correct |
1039 ms |
158412 KB |
Output is correct |
51 |
Correct |
553 ms |
77960 KB |
Output is correct |
52 |
Correct |
484 ms |
64648 KB |
Output is correct |
53 |
Correct |
1055 ms |
161616 KB |
Output is correct |
54 |
Correct |
1110 ms |
162612 KB |
Output is correct |
55 |
Correct |
1 ms |
844 KB |
Output is correct |