Pagini recente » Cod sursa (job #828119) | Cod sursa (job #3347761) | Cod sursa (job #706156) | Cod sursa (job #3311795) | Cod sursa (job #3316545)
#include<fstream>
#include<cstring>
#include<unordered_map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
unsigned a[1048576],c[1048576];
unordered_map<int,int> b;
int n;
long long A(int l)
{
memset(c,0,sizeof c);
int 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;
}
//cout<<i<<' '<<j<<'\n';
for(w+=j;j<n;) {
if(!c[a[j]])
++k;
for(++c[a[j++]];i<n&&k>l;++i)
if(--c[a[i]],!c[a[i]])
--k;
w+=j-i;//,cout<<i<<' '<<j<<'\n';
}
//cout<<w<<'\n';
return w;
}
int main()
{
int m=0,u,v;
cin>>n>>u>>v;
for(int i=0;i<n;cin>>a[i++]);
for(int i=0;i<n;++i)
if(b.find(a[i])==b.end())
b[a[i]]=m,a[i]=m++;
else
a[i]=b[a[i]];
return cout<<A(v)-(u>1?A(u-1):0),0;
}