Pagini recente » Cod sursa (job #2167819) | Cod sursa (job #1439512) | Cod sursa (job #2908341) | Cod sursa (job #2560216) | Cod sursa (job #2093723)
#include <cstdio>
#include <unordered_map>
using namespace std;
const int Buffer=1<<20;
char pars[Buffer];
int poz_pars,v[1048580],n;
unordered_map<int,int> q;
void inc()
{
poz_pars++;
if(poz_pars==Buffer)
{
fread(pars,1,Buffer,stdin);
poz_pars=0;
}
}
int read()
{
for(;pars[poz_pars]<'0' or pars[poz_pars]>'9';inc());
int s=0;
for(;pars[poz_pars]>='0' && '9'>=pars[poz_pars];inc()) s=s*10+pars[poz_pars]-'0';
return s;
}
long long solve(int l)
{
if(l==0) return 0;
int poz=1,nr=0;
long long sol=0;
for(int i=1;i<=n;i++)
{
while(poz<=n)
{
if(q[v[poz]]==0 && nr==l) break;
q[v[poz]]++;
if(q[v[poz]]==1) nr++;
poz++;
}
sol+=poz-i;
q[v[i]]--;
if(q[v[i]]==0) nr--;
}
return sol;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
int l,u;
fread(pars,1,Buffer,stdin);
n=read();l=read();u=read();
for(int i=1;i<=n;i++) v[i]=read();
printf("%lld",solve(u)-solve(l-1));
return 0;
}