Pagini recente » Cod sursa (job #1106790) | Cod sursa (job #1732157) | Cod sursa (job #1175162) | Cod sursa (job #355147) | Cod sursa (job #1255566)
#include <cstdio>
#define mod 666013
#include <vector>
#define UI unsigned int
using namespace std;
int u,l,i,n,distinct;
UI a[(1<<20)+6];
vector< pair<UI,UI> > h[mod+5];
void ins(UI x)
{
vector<pair<UI,UI> > :: 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(UI x)
{
vector<pair<UI,UI> > :: 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--;
}
}
long long 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("%u",&a[i]);
printf("%lld\n",1LL*Kalc(l)-1LL*Kalc(u-1));
return 0;
}