Pagini recente » Cod sursa (job #1034207) | Cod sursa (job #806483) | Diferente pentru home intre reviziile 799 si 798 | Statistici Matei Sonia (matei.sonia) | Cod sursa (job #1279176)
//Deresu Roberto - FMI
//Re :)
#include<fstream>
#include<map>
#define nx 1100007
using namespace std;
int n,l,u;
long long v[nx];
map<long long,int>mymap;
map<long long,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;
}