Pagini recente » Cod sursa (job #1558315) | Cod sursa (job #2423216) | Cod sursa (job #1505452) | Cod sursa (job #1164561) | Cod sursa (job #2707215)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <unordered_map>
#define DIM (1<<20 + 5)
#define DIMBUFF 100005
using namespace std;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
FILE *citire = fopen("secv5.in", "r");
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 read() {
int val = 0;
while (!(buff[pp] >= '0' && buff[pp] <= '9'))
if (++pp == DIMBUFF) {
fread(buff, 1, DIMBUFF, citire);
pp=0;
}
while (buff[pp] >= '0' && buff[pp] <= '9') {
val = val*10 + buff[pp] - '0';
if (++pp == DIMBUFF) {
fread(buff, 1, DIMBUFF, citire);
pp=0;
}
}
return val;
}
int main(){
fread(buff, 1, DIMBUFF, citire);
n=read();
l=read();
u=read();
for(int i=1; i<=n; i++)
v[i]=read();
for(int i=1; i<=n; i++){
st[v[i]]++;
dr[v[i]]++;
while(st.size() >= l)
if (--st[v[++a]] == 0)
st.erase(v[a]);
while(dr.size() > u)
if (--dr[v[++b]] == 0)
dr.erase(v[b]);
sol+=a-b;
}
fout<<sol;
return 0;
}