Pagini recente » Cod sursa (job #3140387) | Cod sursa (job #683807) | Cod sursa (job #3123980) | Cod sursa (job #1550748) | Cod sursa (job #2820904)
#include <bits/stdc++.h>
using namespace std;
inline void Open(const string Name) {
#ifndef ONLINE_JUDGE
(void)!freopen((Name + ".in").c_str(), "r", stdin);
(void)!freopen((Name + ".out").c_str(), "w", stdout);
#endif
}
unordered_map <unsigned int, int> H;
unsigned int v[(1 << 20) + 1], F[(1 << 20) + 1];
unsigned int N, L, U, cnt;
long long ans;
long long solve(int len) {
memset(F, 0, sizeof(F));
long long ans = 0;
for(int i = 1, j = 1, p = 0;i <= N;i++) {
F[v[i]]++, p += (F[v[i]] == 1);
while(p > len)
p -= (--F[v[j++]] == 0);
ans += i - j + 1;
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
Open("secv5");
cin >> N >> L >> U;
for(int i = 1;i <= N;i++) {
cin >> v[i];
if(!H[v[i]])
H[v[i]] = ++cnt;
v[i] = H[v[i]];
}
cout << solve(U) - solve(L - 1);
return 0;
}