Pagini recente » Cod sursa (job #3214533) | Cod sursa (job #603189) | Cod sursa (job #1041294) | Cod sursa (job #1401716) | Cod sursa (job #2081885)
#include <fstream>
#include <unordered_map>
#include <cassert>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
long long int n, l, u, v[1050000];
long long int nr_subSecv(long long int lim){
int cnt_elem = 0, cnt_subSecv = 0, dr = 1, st = 1;
unordered_map <long long int, long long int>fr;
for (long long 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 (long long int i = 1; i <= n; ++ i)
in >> v[i];
out << nr_subSecv(u) - nr_subSecv(l - 1);
return 0;
}