Pagini recente » Cod sursa (job #1039698) | Cod sursa (job #833943) | Cod sursa (job #1925191) | Cod sursa (job #1677725) | Cod sursa (job #3267480)
#include <fstream>
#include <unordered_map>
// #define int unsigned long long
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
unordered_map<unsigned long long, int> m, m2;
unsigned long long w[1050000];
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, l, u, dcnt = 0, cnt = 0, st = 1, lcnt = 0, stl = 1; cin >> n >> l >> u;
for(int i = 1; i <= n; i ++){
cin >> w[i];
if(m[w[i]] == 0)
dcnt ++;
if(m2[w[i]] == 0)
lcnt ++;
m[w[i]] ++;
m2[w[i]] ++;
while(dcnt > u) {
m[w[st]]--;
if(m[w[st]] == 0)
m.erase(w[st]), dcnt --;
st ++;
}
bool b = false;
while(lcnt >= l) {
m2[w[stl]]--;
if(m2[w[stl]] == 0)
m2.erase(w[stl]), lcnt --;
stl ++;
b = true;
}
if(b){
stl --;
m2[w[stl]] ++;
lcnt ++;
}
if(lcnt >= l){
cnt += stl - st + 1;
// cout << st << ' ' << stl << ' ' << i << '\n';
}
}
cout << cnt;
}