Pagini recente » Cod sursa (job #1114919) | Cod sursa (job #791337) | Cod sursa (job #1128370) | Cod sursa (job #1856253) | Cod sursa (job #1282204)
//Deresu Roberto - FMI
//Re :)
#include<fstream>
#include<unordered_map>
#define nx 1100007
using namespace std;
int n,l,u;
unsigned int v[nx];
unordered_map<unsigned int, int>mymap;
unordered_map<unsigned int, int> :: iterator it;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
long long secv(int l)
{
long long nr;
int i, j, k;
nr = k = 0;
j = 1;
for(i=1;i<=n;i++)
{
it = mymap.find(v[i]);
if(it != mymap.end())
it->second ++;
else
mymap.insert(make_pair(v[i],1));
if(mymap.size() > l)
{
nr += 1LL*(i-j)*(i-j+1)/2 - 1LL*(k-j)*(k-j+1)/2;
k = i;
while(mymap.size() > l)
{
it = mymap.find(v[j++]);
it->second --;
if(it->second == 0)
mymap.erase(it);
}
}
}
nr += 1LL*(i-j)*(i-j+1)/2 - 1LL*(k-j)*(k-j+1)/2;
mymap.clear();
return nr;
}
int main()
{
fin>>n>>l>>u;
for(int i=1;i<=n;i++)
fin>>v[i];
long long nrl = secv(l-1);
long long nru = secv(u);
fout<<nru-nrl;
return 0;
}