记录编号 589464 评测结果 AAAAAAAAAA
题目名称 充电宝 最终得分 100
用户昵称 Gravatar小金 是否通过 通过
代码语言 C++ 运行时间 0.207 s
提交时间 2024-07-05 17:17:18 内存使用 8.25 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n;
long long a[200010],f[200010],tree[200010],ans;
long long ask(int x)
{
    int ans=0;
    for(;x;x-=x&-x)
    {
        ans+=tree[x];
    }
    return ans;
}
void add(int x,long long y)
{
    for(;x<=n;x+=x&-x)
    {
        tree[x]+=y;
    }
}
int main()
{
    freopen("charger.in","r",stdin);
    freopen("charger.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);
        f[i]=n+1;
    }
    for(int i=n;i>=1;i--)
    {
        ans+=ask(f[a[i]]-1);
        add(f[a[i]],-1);
        f[a[i]]=i;
        add(f[a[i]],1);
    }
    printf("%lld",ans);
    return 0;
}