Pagini recente » Cod sursa (job #3193413) | Cod sursa (job #723695) | Cod sursa (job #3122114) | Cod sursa (job #148486) | Cod sursa (job #2885052)
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
int n, l, u;
unordered_map<int, int> mp_u;
unordered_map<int, int> mp_l;
unordered_map<int, int> elem;
int main()
{
int x;
in >> n >> l >> u;
int calcul_u = 0;
int calcul_l = 0;
int j = 1;
int k = 1;
for (int i=1; i<=n; i++) {
in >> x;
elem[i] = x;
mp_u[x] ++;
if (mp_u.size() > u) {
while (mp_u.size() > u) {
mp_u[elem[j]]--;
if (mp_u[elem[j]] == 0) {
mp_u.erase(elem[j]);
}
j++;
}
}
calcul_u += (i - j + 1);
mp_l[x] ++;
if (mp_l.size() >= l) {
while (mp_l.size() >= l) {
mp_l[elem[k]]--;
if (mp_l[elem[k]] == 0) {
mp_l.erase(elem[k]);
}
k++;
}
}
calcul_l += (i - k + 1);
}
out << calcul_u - calcul_l;
return 0;
}