Pagini recente » Cod sursa (job #1824602) | Cod sursa (job #2151899) | Cod sursa (job #2262974) | Cod sursa (job #395892) | Cod sursa (job #2259300)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
const int Nmax = 2e6;
unordered_map < unsigned int, int > M;
unsigned int a[Nmax];
int n, L, U;
int main()
{
int i, j, nrd;
long long s, s1;
fin >> n >> L >> U;
for(i = 1 ; i <= n ; i++)
fin >> a[i];
j = 1;
nrd = 0;
s = s1 = 0;
for(i = 1 ; i <= n ; i++)
{
++M[a[i]];
if(M[a[i]] == 1)
++nrd;
while(nrd > U && j <= i)
{
--M[a[j]];
if(M[a[j]] == 0)
{
--nrd;
M.erase(a[j]);
}
++j;
}
s += (i - j + 1);
}
M . clear();
U = L - 1;
j = 1;
nrd = 0;
for(i = 1 ; i <= n ; i++)
{
++M[a[i]];
if(M[a[i]] == 1)
++nrd;
while(nrd > U)
{
--M[a[j]];
if(M[a[j]] == 0)
{
--nrd;
M.erase(a[j]);
}
++j;
}
s1 += (i - j + 1);
}
fout << (s - s1) << "\n";
fin.close();
fout.close();
return 0;
}