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