Pagini recente » Cod sursa (job #2175469) | Cod sursa (job #36825) | Cod sursa (job #2842668) | Cod sursa (job #2964014) | Cod sursa (job #2885105)
#include <bits/stdc++.h>
std::ifstream fin("secv5.in");
std::ofstream fout("secv5.out");
int main() {
int n, l, u;
fin >> n >> l >> u;
std::vector<unsigned> vals(n);
for (auto &it:vals) {
fin >> it;
}
int lft = 0, rgtl = -1, rgtu = -1;
std::unordered_map<unsigned, int> mapl;
std::unordered_map<unsigned, int> mapu;
long long unsigned sol = 0LL;
while (lft < n) {
while (rgtl < n - 1 && mapl.size() < l) {
++mapl[vals[++rgtl]];
}
if (mapl.size() < l) {
break;
}
while (rgtu < n - 1 && mapu.size() <= u) {
++mapu[vals[++rgtu]];
}
sol += 1LL * (rgtu - rgtl + (mapu.size() <= u));
if (lft < n) {
if (--mapl[vals[lft]] == 0) {
mapl.erase(vals[lft]);
}
if (--mapu[vals[lft]] == 0) {
mapu.erase(vals[lft]);
}
}
++lft;
}
fout << sol;
return 0;
}