【题目链接】
【算法】
树状数组
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010
int n,i,x;
long long ans;
int pos[MAXN];
long long c[MAXN];
inline int lowbit(int x)
{
return x & (-x);
}
inline void modify(int pos,long long val)
{
int i;
for (i = pos; i <= 2 * n; i += lowbit(i)) c[i] += val;
}
inline long long query(int pos)
{
int i;
long long ans = 0;
for (i = pos; i; i -= lowbit(i)) ans += c[i];
return ans;
}
inline long long query(int l,int r)
{
return query(r) - query(l-1);
}
int main() {
scanf("%d",&n);
for (i = 1; i <= 2 * n; i++)
{
scanf("%d",&x);
if (!pos[x])
{
pos[x] = i;
modify(i,1);
} else
{
ans += query(pos[x]+1,i-1);
modify(pos[x],-1);
}
}
printf("%lld\n",ans);
return 0;
}