Pagini recente » Cod sursa (job #1061469) | Cod sursa (job #1171862) | Cod sursa (job #1871326) | Monitorul de evaluare | Cod sursa (job #3318177)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
const long long N_MAX = 1 << 20;
long long n, l, u;
long long v[N_MAX + 5];
long long secvente(long long v[], long long m) {
if (m == 0)
return 0;
long long cnt = 0;
unordered_map<long long, long long> f;
long long st = 1, distincte = 0;
for (long long dr = 1; dr <= n; dr++) {
if (f[v[dr]] == 0)
distincte++;
f[v[dr]]++;
while (distincte > m && st <= dr) {
f[v[st]]--;
if (f[v[st]] == 0)
distincte--;
st++;
}
cnt += dr - st + 1;
}
return cnt;
}
int32_t main() {
fin >> n >> l >> u;
for (int i = 1; i <= n; i++)
fin >> v[i];
long long cntu = secvente(v, u), cntl = secvente(v, l - 1);
fout << cntu - cntl << "\n";
return 0;
}