Pagini recente » Cod sursa (job #2208394) | Cod sursa (job #1449852) | Cod sursa (job #2826952) | Cod sursa (job #1863206) | Cod sursa (job #2877069)
#include <fstream>
#include <unordered_map>
#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;
}