Pagini recente » Cod sursa (job #252634) | Cod sursa (job #1744462) | Cod sursa (job #1774499) | Cod sursa (job #2535634) | Cod sursa (job #1995123)
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
int N, L, U;
int nr[1050000];
int main()
{
int i, j;
unsigned long long int s1=0, s2=0, cnt;
unordered_map<int, int> aparitii;
unordered_map<int, int> aparitii2;
ifstream in ("secv5.in");
ofstream out ("secv5.out");
in>>N>>L>>U;
for (i=1;i<=N;++i)
in>>nr[i];
cnt=0;j=1;
for (i=1;i<=N;++i)
{
aparitii[nr[i]]++;
if(aparitii[nr[i]]==1) //am inserat o valoare noua
++cnt;
while(cnt >= L)
{
aparitii[nr[j]]--;
if(!aparitii[nr[j]])
{
aparitii.erase(nr[j]);
--cnt;
}
++j;
}
s1=s1+i-j+1;
}
//aparitii.clear();
j=1;
cnt =0;
for (i=1;i<=N;++i)
{
aparitii2[nr[i]]++;
if(aparitii2[nr[i]]==1)
++cnt;
while(cnt > U)
{
aparitii2[nr[j]]--;
if(!aparitii2[nr[j]])
{
aparitii2.erase(nr[j]);
--cnt;
}
++j;
}
s2=s2+i-j+1;
}
out<<s2-s1<<"\n";
return 0;
}