Pagini recente » Borderou de evaluare (job #2925447) | Monitorul de evaluare | Cod sursa (job #1838102)
#include <iostream>
#include <cstdio>
#include <unordered_map>
#define MAXN (1<<21)
using namespace std;
int n, L, U;
unsigned int a[MAXN];
long long sol;
long long tot(int ma)
{
unordered_map<unsigned int, int> m;
int sz = 0, ind = 1;
long long part = 0;
for (int i = 1; i <= n; i++)
{
m[a[i]]++;
if (m[a[i]] == 1) sz++;
while (sz > ma)
{
m[a[ind]]--;
if (m[a[ind++]] == 0)
sz--;
}
part += i-ind+1;
}
return part;
}
void solve()
{
sol = tot(U) - tot(L-1);
}
int main()
{
freopen("secv5.in", "r", stdin);
freopen("secv5.out", "w", stdout);
cin >> n >> L >> U;
for (int i = 1; i <= n; i++)
cin >> a[i];
solve();
printf("%lld\n", sol);
return 0;
}