-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathYODANESS.cpp
58 lines (58 loc) · 928 Bytes
/
YODANESS.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<sstream>
#include<cstdio>
#define ll long
using namespace std;
ll n;
ll read(ll * bit,ll idx)
{
ll sum=0;
while(idx>0)
{
sum+=bit[idx];
idx-=(idx & -idx);
}
return sum;
}
void updt(ll *bit, ll idx)
{
while(idx<=n)
{
bit[idx]++;
idx+=(idx & -idx);
}
}
int main()
{
ll t,i,j,k,bit[30005];
string s,s1;
map<string,ll> mp;
cin>>t;
while(t--)
{
scanf("%lld\n",&n);
k=0;
getline(cin,s1);
for(i=0;i<n;i++)
{
cin>>s;
k++;
mp[s]=k;
}
memset(bit,0,sizeof(bit));
ll ans=0;
stringstream ss(s1);
for(i=0;i<n;i++)
{
ss>>s;
k=mp[s];
updt(bit,k);
ans+=read(bit,n)-read(bit,k);
}
cout<<ans<<endl;
}
return 0;
}