Pagini recente » Cod sursa (job #2388469) | Cod sursa (job #2848473) | Cod sursa (job #666850) | Cod sursa (job #1208470) | Cod sursa (job #1891593)
#include <fstream>
#include <vector>
#include <memory.h>
#define MOD 666013
#define nmax (1<<20)+1
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
long long n,u,l,v[nmax],nr,vf[nmax],rez[nmax];
vector < pair< long long, long long > >lista[MOD];
long long real(long long x)
{
long long l=x%MOD;
int i;
for(i=0; i<lista[l].size(); i++)
if(lista[l][i].first==x)
return lista[l][i].second;
return 0;
}
long long normalize(long long x)
{
long long p=real(x);
if(p)
return p;
else
{
nr++;
lista[x%MOD].push_back(make_pair(x,nr));
return nr;
}
}
long long proces(long long x)
{
long long sum=0,p=1,nr=0;
int i;
memset(vf,0,sizeof(vf));
for(i=1; i<=n; i++)
{
vf[v[i]]++;
if(vf[v[i]]==1)
{
nr++;
while(nr>x)
{
vf[v[p]]--;
if(!vf[v[p]])
nr--;
p++;
}
}
rez[i]=p;
sum+=(i-rez[i]+1);
}
return sum;
}
int main()
{
int i;
fin>>n>>l>>u;
for(i=1; i<=n; i++)
{
fin>>v[i];
v[i]=normalize(v[i]);
}
fout<<proces(u)-proces(l-1);
fin.close();
fout.close();
return 0;
}