Pagini recente » Cod sursa (job #3176134) | Cod sursa (job #1054054) | Cod sursa (job #488630) | Cod sursa (job #910468) | Cod sursa (job #2443152)
#include <cstdio>
#include <unordered_map>
using namespace std;
const int NMAX = (1 << 20) + 5;
unsigned int n, l, u, v[NMAX];
long long Query(int sz)
{
unordered_map <unsigned int, int> cnt;
long long ret = 0;
int p = 1;
for (int i = 1;i <= n;++i)
{
++cnt[v[i]];
while (cnt.size() > sz)
{
--cnt[v[p]];
if (cnt[v[p]] == 0)
cnt.erase(v[p]);
++p;
}
ret += i - p + 1;
}
return ret;
}
int main()
{
FILE *fin = fopen("secv5.in", "r");
FILE *fout = fopen("secv5.out", "w");
fscanf(fin, "%ld%ld%ld", &n, &l, &u);
for (int i = 1;i <= n;++i)
fscanf(fin, "%ld", &v[i]);
fprintf(fout, "%ld\n", Query(u) - Query(l - 1));
fclose(fin);
fclose(fout);
return 0;
}