Pagini recente » Cod sursa (job #1858880) | Cod sursa (job #1386455) | Cod sursa (job #1988067) | Cod sursa (job #1052307) | Cod sursa (job #3267481)
#include <fstream>
#include <unordered_map>
#define int unsigned long long
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
unordered_map<int, int> m, m2;
int 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;
}