Pagini recente » Cod sursa (job #2874391) | Cod sursa (job #1125684) | wellcodesimulareclasa9-11martie | Cod sursa (job #2700981) | Cod sursa (job #2764221)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("secv5.in");
ofstream out ("secv5.out");
const int MOD=666013,NMAX=(1<<21);
int n,l,u;
int v[NMAX];
vector <pair<int,int>> h[MOD+5];
void pune (int x,int &k)
{
int r;
int i;
r=x%MOD;
for(i=0;i<h[r].size();i++)
{
if(h[r][i].first==x)
{
h[r][i].second++;
break;
}
}
if(i==h[r].size())
{
k++;
h[r].push_back(make_pair(x,1));
}
}
void sterge(int x, int &k)
{
int r;
r=x%MOD;
int lung=h[r].size();
for(int i=0;i<lung;i++)
{
if(h[r][i].first==x)
{
h[r][i].second--;
if(h[r][i].second==0)
{
k--;
swap(h[r][i],h[r][lung-1]);
h[r].pop_back();
}
break;
}
}
}
long long solve(int val)
{
int i,j,k;
long long ans=0;
for(i=0;i<MOD;i++)
h[i].clear();
j=1;
k=0;
for(i=1;i<=n;i++)
{
pune(v[i],k);
while(k>val)
{
sterge(v[j],k);
j++;
}
ans=ans+ 1LL*(i-j+1);
}
return ans;
}
int main()
{
in>>n>>l>>u;
for(int i=1;i<=n;i++)
in>>v[i];
out<<solve(u)-solve(l-1)<<'\n';
return 0;
}