Pagini recente » Cod sursa (job #2375542) | Cod sursa (job #2248762) | Cod sursa (job #769116) | Cod sursa (job #921526) | Cod sursa (job #2081886)
#include <fstream>
#include <unordered_map>
#include <cassert>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
int n, l, u, v[1050000];
int nr_subSecv(int lim){
int cnt_elem = 0, cnt_subSecv = 0, dr = 1, st = 1;
unordered_map <int, int>fr;
for (int i = 1; i <= n; ++ i){
fr[v[i]] ++;
if (fr[v[i]] == 1)
cnt_elem ++;
dr = i;
while (cnt_elem > lim){
fr[v[st]] --;
if (fr[v[st]] == 0){
cnt_elem --;
fr.erase(v[st]);
}
st ++;
}
//assert(dr >= st);
cnt_subSecv += dr - st + 1;
}
return cnt_subSecv;
}
int main(){
in >> n >> l >> u;
for (int i = 1; i <= n; ++ i)
in >> v[i];
out << nr_subSecv(u) - nr_subSecv(l - 1);
return 0;
}