Pagini recente » Cod sursa (job #1819536) | Cod sursa (job #1886378) | Cod sursa (job #1973723) | Cod sursa (job #2929206) | Cod sursa (job #2525236)
#include <bits/stdc++.h>
#define DIM (1<<20)+3
#define DIMBUFF 100001
using namespace std;
FILE *fin=fopen("secv5.in", "r");
FILE *fout=fopen("secv5.out", "w");
int n,l,u;
long long a=1LL,b=1LL,sol,v[DIM];
unordered_map<unsigned int,int> st,dr;
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();
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;
}