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