Pagini recente » Cod sursa (job #2463549) | Cod sursa (job #1983538) | Cod sursa (job #690541) | Cod sursa (job #3253786) | Cod sursa (job #3283960)
#include <fstream>
#include <map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
map<int, int> M;
long long int n, x, y, v[2000005], dr = 0, st = 1, cnt1 = 0, cnt2 = 0, r = 0;
int main(){
cin>>n>>x>>y;
for (int i = 1; i <= n; i++){
cin>>v[i];
}
while (dr != n){
dr++;
M[v[dr]]++;
if (M[v[dr]] == 1){
r++;
if (r <= y){
cnt1 += dr - st + 1;
}
while (r > y){
M[v[st]]--;
if (M[v[st]] == 0){
r--;
}
st++;
}
}
}
r = 0;
st = 1;
dr = 0;
for (auto &i:M){
M.erase(i.first);
}
while (dr != n){
dr++;
M[v[dr]]++;
if (M[v[dr]] == 1){
r++;
if (r <= x - 1){
cnt2 += dr - st + 1;
}
while (r > x - 1){
M[v[st]]--;
if (M[v[st]] == 0){
r--;
}
st++;
}
}
}
cout<<cnt1 - cnt2;
}