Pagini recente » Cod sursa (job #2979842) | Cod sursa (job #2039264) | Cod sursa (job #1788269) | Cod sursa (job #1631495) | Cod sursa (job #1995120)
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
int N, L, U;
int nr[1050000];
int main()
{
int i, cnt, j, s1=0, s2=0;
unordered_map<int, int> aparitii;
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)
{
aparitii[nr[i]]++;
if(aparitii[nr[i]]==1) //am inserat o valoare noua
++cnt;
while(cnt > U)
{
aparitii[nr[j]]--;
if(!aparitii[nr[j]])
{
aparitii.erase(nr[j]);
--cnt;
}
++j;
}
s2=s2+i-j+1;
}
out<<s2-s1;
}