Pagini recente » Cod sursa (job #147806) | Cod sursa (job #969469) | Cod sursa (job #50528) | Cod sursa (job #1515928) | Cod sursa (job #1067240)
#include<stdio.h>
#include<unordered_map>
#define dim (1<<20)+1
using namespace std;
unsigned int v[dim];
unordered_map<unsigned int, int> h1, h2;
int main()
{
FILE*f = fopen("secv5.in", "r");
int n, min, max;
fscanf(f, "%d %d %d", &n, &min, &max);
long long sol = 0;
int p1 = 1, p2 = 1, nr1 = 0, nr2 = 0;
for (int i = 1; i <= n; ++i)
{
fscanf(f, "%u", &v[i]);
++h1[v[i]];
++h2[v[i]];
if (h1[v[i]]==1)
{
++nr1;
while (nr1 > max)
{
--h1[v[p1]];
if (!h1[v[p1]])
--nr1;
++p1;
}
}
if (h2[v[i]] == 1)
{
++nr2;
while (nr2>min)
{
--h2[v[p2]];
if (!h2[v[p2]])
--nr2;
++p2;
}
}
while (h2[v[p2]] > 1)
{
--h2[v[p2]];
++p2;
}
if (nr2 >= min)
sol += p2 - p1 + 1;
}
fclose(f);
FILE*g = fopen("secv5.out", "w");
fprintf(g, "%lld", sol);
fclose(g);
return 0;
}