Pagini recente » Cod sursa (job #1512145) | Cod sursa (job #1749362) | Cod sursa (job #1136413) | Cod sursa (job #1445619) | Cod sursa (job #2141292)
#include <fstream>
#include <unordered_map>
#include <cassert>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
int n, l, u;
unsigned int v[1050000];
long long nr_subSecv(int lim){
int cnt_elem = 0, dr = 1, st = 1;
long long cnt_subSecv = 0;
unordered_map <unsigned 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 += 1LL*(dr - st) + 1LL ;
}
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;
}