Pagini recente » Cod sursa (job #286131) | Cod sursa (job #1578492) | Cod sursa (job #1964686) | Cod sursa (job #1228177) | Cod sursa (job #1312341)
#include <stdio.h>
#include <unordered_map>
using namespace std;
typedef long long int64;
typedef unsigned int uint;
const int Nmax = (1 << 20) + 5;
uint n, l, u;
uint v[Nmax];
unordered_map<uint, uint> h;
int64 secv(uint x) {
int64 result = 0;
h.clear();
for (uint 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("%u %u %u", &n, &l, &u);
for (uint i = 1; i <= n; ++i)
scanf("%u", &v[i]);
printf("%lld\n", secv(u) - secv(l - 1));
return 0;
}