Pagini recente » Cod sursa (job #1668321) | Cod sursa (job #1844385) | Borderou de evaluare (job #1248045) | Cod sursa (job #2738128) | Cod sursa (job #2885092)
#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<long long int> vals(n);
for (auto &it:vals) {
fin >> it;
}
int lft = 0, rgtl = 0, rgtu = 0;
std::unordered_map<long long int, int> mapl;
std::unordered_map<long long int, int> mapu;
long long int 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;
}