Pagini recente » Cod sursa (job #2091881) | Cod sursa (job #2708692) | Cod sursa (job #1403208) | Cod sursa (job #1687903) | Cod sursa (job #1779610)
#include <bits/stdc++.h>
#define MOD 32767
#define DIM (1<<20)
using namespace std;
int v[DIM],n,l,u,x,in,i,ap[DIM];
vector<int>h[MOD+10];
vector<int>::iterator it;
bool ok;
long long solve(int nr)
{
int i,j=1,dist=0;
long long ans=0;
memset(ap,0,sizeof(ap));
for(i=1; i<=n; ++i)
{
if(ap[v[i]]==0)dist++;
ap[v[i]]++;
while(dist>nr)
{
ap[v[j]]--;
if(ap[v[j]]==0)dist--;
++j;
}
ans+=i-j+1;
}
return ans;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%d%d%d",&n,&l,&u);
for(i=1; i<=n; ++i)
{
scanf("%d",&v[i]);
x=v[i];
ok=false;
for(it=h[x%MOD].begin(); it<h[x%MOD].end(); ++it)
if(*it!=0)
{
ok=true;
break;
}
if(!ok)h[x%MOD].push_back(++in);
}
for(i=1; i<=n; ++i)
{
it=h[v[i]%MOD].begin();
v[i]=*it;
}
printf("%lld\n",solve(u)-solve(l-1));
return 0;
}