Pagini recente » Cod sursa (job #3256118) | Cod sursa (job #2473038) | Cod sursa (job #2640368) | Cod sursa (job #1011157) | Cod sursa (job #1312336)
#include <stdio.h>
#include <unordered_map>
using namespace std;
typedef long long int64;
typedef unsigned int uint;
const int Nmax = 1048576 + 10;
int n, l, u;
uint v[Nmax];
unordered_map<uint, uint> h;
int64 secv(uint x) {
int64 result = 0;
h.clear();
for (int st = 1, dr = 1; dr <= n; ++dr) {
++h[ v[dr] ];
while (h.size() > x) {
--h[ v[st++] ];
if (h[ v[st - 1] ] == 0)
h.erase(v[st - 1]);
}
result += 1LL * (dr - st + 1);
}
return result;
}
int main() {
freopen("secv5.in", "r", stdin);
freopen("secv5.out", "w", stdout);
scanf("%d %d %d", &n, &l, &u);
for (int i = 1; i <= n; ++i)
scanf("%du", &v[i]);
printf("%lld\n", secv(u) - secv(l - 1));
return 0;
}