Cod sursa(job #3362415)
| Utilizator | Data | 8 august 2026 16:25:20 | |
|---|---|---|---|
| Problema | Secventa 5 | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.47 kb |
#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;
}
