Pagini recente » Cod sursa (job #2314682) | Cod sursa (job #2641598) | Cod sursa (job #2334302) | Cod sursa (job #1601925) | Cod sursa (job #3316548)
#include<fstream>
#include<cstring>
#include<unordered_map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
const int Z=4096;
unsigned a[1048576],c[1048576],n,p=Z;
unordered_map<int,int> b;
char s[Z];
inline char A()
{
if(p==Z)
cin.read(s,Z),p=0;
return s[p++];
}
unsigned B()
{
unsigned n=0;
char c=A();
for(;c>47;n=c-48+n*10,c=A());
return n;
}
long long C(int l)
{
memset(c,0,sizeof c);
unsigned i=0,j=0,k=0;
long long w=0;
for(;j<n&&k<l;++j) {
if(!c[a[j]])
++k;
++c[a[j]],w+=j;
}
for(w+=j;j<n;) {
if(!c[a[j]])
++k;
for(++c[a[j++]];i<n&&k>l;++i)
if(!--c[a[i]])
--k;
w+=j-i;
}
return w;
}
int main()
{
n=B();
unsigned u=B(),v=B();
for(unsigned i=0;i<n;a[i++]=B());
for(unsigned i=0,m=0;i<n;b.find(a[i])==b.end()?b[a[i]]=m,a[i]=m++:a[i]=b[a[i]],++i);
return cout<<C(v)-(u>1?C(u-1):0),0;
}