Pagini recente » Rating Denis Dragan (denisdragan) | Cod sursa (job #1659514) | Cod sursa (job #2528940) | Cod sursa (job #2099718) | Cod sursa (job #1279174)
//Deresu Roberto - FMI
//Re :)
#include<fstream>
#include<map>
#define nx 1100007
using namespace std;
int n,l,u,v[nx];
map<int,int>mymap;
map<int,int> :: iterator it;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int secv(int l)
{
int nr, 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 += (i-j)*(i-j+1)/2 - (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 += (i-j)*(i-j+1)/2 - (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];
int nrl = secv(l-1);
int nru = secv(u);
fout<<nru-nrl;
return 0;
}