#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N],pre[N],fen[N],n;
void add(int x,int v=1)
{
x+=n+1;
while(x<N)
{
fen[x]+=v;
x+=(x&-x);
}
}
int query(int x)
{
x+=n+1;
int ans=0;
while(x>0)
{
ans+=fen[x];
x-=(x&-x);
}
return ans;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
set<int> dif;
for(int i=0;i<n;i++)
{
cin>>a[i];
dif.insert(a[i]);
}
int ans=0;
for(auto x:dif)
{
for(int i=0;i<n;i++)
{
pre[i+1]=pre[i]+(a[i]==x?+1:-1);
// pre[i+1] > pre[j]
add(pre[i]);
ans+=query(pre[i+1]-1);
}
for(int i=0;i<n;i++)add(pre[i],-1);
}
cout<<ans<<endl;
}
| # | 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... |