Pagini recente » Cod sursa (job #321050) | Cod sursa (job #2169890) | Cod sursa (job #1129397) | Cod sursa (job #1650507) | Cod sursa (job #3267461)
#include <fstream>
#include <map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
map<int, int> m, m2;
int w[1050000];
int main() {
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;
}