Pagini recente » Cod sursa (job #1214048) | Cod sursa (job #2205941) | Cod sursa (job #1832026) | Cod sursa (job #2927685) | Cod sursa (job #2607178)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int n,l,u,x,nrl,nru,lastu=1,lastl=1;
long long sol;
queue <int> Ql,Qu;
map <int,int> vizl,vizu;
int main()
{
fin>>n>>l>>u;
for(int i=1;i<=n;i++)
{
fin>>x;
Ql.push(x);
if(!vizl[x])
nrl++;
if(!vizu[x])
nru++;
vizl[x]++;
vizu[x]++;
while(!Ql.empty())
{
int elm=Ql.front();
if(nrl>l)
{
Ql.pop();
vizl[elm]--;
lastl++;
if(!vizl[elm])
nrl--;
}
else
{
if(vizl[elm]>1)
{
vizl[elm]--;
lastl++;
Ql.pop();
}
else
break;
}
}
while(nru>u && Qu.empty())
{
int elm=Qu.front();
Qu.pop();
vizu[elm]--;
lastu++;
if(!vizu[elm])
nru--;
}
if(nrl>=l && nru<=u)
sol+=lastl-lastu+1;
}
fout<<sol<<'\n';
}