Pagini recente » Cod sursa (job #3362407) | Cod sursa (job #3362471) | Cod sursa (job #3362197) | Cod sursa (job #3362199) | Cod sursa (job #3362415)
#include <bits/stdc++.h>
using namespace std;
int n,s[100555];
unordered_map<int,int> f;
void up(int in,int up)
{
while(in<=n)
{
s[in]+=up;
in+=in&(-in);
}
}
int sm(int in)
{
int sum=0;
while(in>=1)
{
sum+=s[in];
in-=in&(-in);
}
return sum;
}
int main()
{
ifstream cin("secv5.in");
ofstream cout("secv5.out");
int x,a,b,dif=0,cnt=0;
cin>>n>>a>>b;
for(int i=1;i<=n;++i)
{
cin>>x;
if(f[x]!=0)
{
up(f[x],-1);
}
else
{
++dif;
}
f[x]=i;
up(i,1);
int st=1,dr=i,mij,i1=1,i2=0;
if(i==3)
{
// cout<<x<<" ";
}
while(st<=dr)
{
mij=(st+dr)/2;
int nr=dif-sm(mij-1);
if(nr>=a)
{
st=mij+1;
i2=mij;
}
else
{
dr=mij-1;
}
}
st=1;
dr=i;
while(st<=dr)
{
mij=(st+dr)/2;
int nr=dif-sm(mij-1);
if(nr<=b)
{
dr=mij-1;
i1=mij;
}
else
{
st=mij+1;
}
}
cnt=cnt+(i2-i1+1);
//cout<<i2<<" "<<i1<<"\n";
}
cout<<cnt;
return 0;
}