Pagini recente » Cod sursa (job #1794386) | Cod sursa (job #516718) | Cod sursa (job #2933749) | Cod sursa (job #2316679) | Cod sursa (job #1254946)
#include <cstdio>
#define mod 666013
#include <vector>
using namespace std;
int a[(1<<20)+6],u,l,i,n,distinct;
vector< pair<int,int> > h[mod+5];
void ins(int x)
{
vector<pair<int,int> > :: iterator it;
for(it=h[x%mod].begin();it!=h[x%mod].end();++it)
if(it->first==x)
{
it->second++;
if(it->second==1) distinct++;
return;
}
h[x%mod].push_back(make_pair(x,1));++distinct;
}
void del(int x)
{
vector<pair<int,int> > :: iterator it;
for(it=h[x%mod].begin();it!=h[x%mod].end();++it)
if(it->first==x)
{
it->second--;
if(it->second==0) distinct--;
}
}
int Kalc(int k)
{
int dr=1,st=1,i;
distinct=0;
for(i=0;i<mod;++i)
h[i].clear();
long long SOL=0LL;
while(dr<=n)
{
ins(a[dr]);
while(distinct>k)
{
del(a[st]);
st++;
}
SOL+=1LL*(dr-st+1);
++dr;
}
return SOL;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%d%d%d",&n,&u,&l);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
printf("%d\n",Kalc(l)-Kalc(u-1));
return 0;
}