Pagini recente » Cod sursa (job #1691292) | Cod sursa (job #311291) | Cod sursa (job #9748) | Cod sursa (job #168175) | Cod sursa (job #2751744)
#include <bits/stdc++.h>
using namespace std;
int v[1048600];
int main()
{
unordered_map <int, int> lvec;
unordered_map <int, int> uvec;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
unsigned int n,u,l;
cin>>n>>l>>u;
long long upoint=0;
long long lpoint=0;
long long ans=0;
for(int i=0;i<(int)n;i++)
{
cin>>v[i];
if(lvec.find(v[i])==lvec.end())
lvec[v[i]]=1;
else
lvec[v[i]]++;
if(uvec.find(v[i])==uvec.end())
uvec[v[i]]=1;
else
uvec[v[i]]++;
while(lpoint<=i and lvec.size()>=l)
{
if(lvec[v[lpoint]]==1)
lvec.erase(v[lpoint]);
else
lvec[v[lpoint]]--;
lpoint++;
}
while(upoint<=i and uvec.size()>u)
{
if(uvec[v[upoint]]==1)
uvec.erase(v[upoint]);
else
uvec[v[upoint]]--;
upoint++;
}
ans+=max(0LL,lpoint-upoint);
}
cout<<ans<<'\n';
}