Pagini recente » Cod sursa (job #365480) | Cod sursa (job #2513780) | Cod sursa (job #1466337) | Cod sursa (job #1088942) | Cod sursa (job #2885090)
#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<int> vals(n);
for (auto &it:vals) {
fin >> it;
}
int lft = 0, rgtl = 0, rgtu = 0;
std::unordered_map<int, int> mapl;
std::unordered_map<int, int> mapu;
int long long sol = 0LL;
while (lft < n) {
while (rgtl < n && mapl.size() < l) {
++mapl[vals[rgtl++]];
}
if (rgtl == n) {
break;
}
while (rgtu != n && mapu.size() <= u) {
++mapu[vals[rgtu++]];
}
sol += 1LL * (rgtu - rgtl + (mapu.size() <= u));
++lft;
if (lft < n) {
if (--mapl[vals[lft]] == 0) {
mapl.erase(vals[lft]);
}
if (--mapu[vals[lft]] == 0) {
mapu.erase(vals[lft]);
}
}
}
fout << sol;
return 0;
}