Pagini recente » Cod sursa (job #2530287) | Cod sursa (job #2409587) | Cod sursa (job #604274) | Cod sursa (job #62702) | Cod sursa (job #2708707)
#include <bits/stdc++.h>
#define DIM (1<<20 + 5)
#define DIMBUFF 100005
using namespace std;
FILE *fin = fopen ("secv5.in", "r");
FILE *fout = fopen ("secv5.out", "w");
unordered_map <unsigned int, int> st,dr;
unsigned int n,l,u,v[DIM];
long long a,b,sol;
char buff[DIMBUFF];
int pp;
int numar()
{
int val = 0;
while (!(buff[pp] >= '0' && buff[pp] <= '9'))
{
pp++;
if (pp == DIMBUFF)
{
fread(buff, 1, DIMBUFF, fin);
pp=0;
}
}
while (buff[pp] >= '0' && buff[pp] <= '9')
{
val = val*10 + buff[pp] - '0';
pp++;
if (pp == DIMBUFF)
{
fread(buff, 1, DIMBUFF, fin);
pp=0;
}
}
return val;
}
int main()
{
fread(buff, 1, DIMBUFF, fin);
n=numar(), l=numar(), u=numar();
for (int i=1; i<=n; i++)
v[i]=numar();
a=b=1;
for (int i=1; i<=n; i++)
{
st[v[i]]++, dr[v[i]]++;
while (st.size()>=l)
{
st[v[a]]--;
if (st[v[a]]==0) st.erase(v[a]);
a++;
}
while (dr.size()>u)
{
dr[v[b]]--;
if (dr[v[b]]==0) dr.erase(v[b]);
b++;
}
sol+=a-b;
}
fprintf (fout, "%lld", sol);
return 0;
}