Pagini recente » Cod sursa (job #1102848) | Cod sursa (job #3316563) | Cod sursa (job #1421396) | Cod sursa (job #118069) | Cod sursa (job #3349845)
#include <fstream>
#include <vector>
#include <unordered_map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
int n, l, u;
int v[1000001];
int res(int k) {
unordered_map<int, int> m;
int st = 1, dr = 1;
m[v[1]] = 1;
int diferite = 1;
int ans = 0;
while(st <= n && st <= dr) {
if(diferite <= k) {
ans++;
if(dr < n) {
dr++;
m[v[dr]]++;
if(m[v[dr]] == 1) diferite++;
}
else {
int tmp = dr - st;
ans += (tmp * (tmp + 1) )/ 2;
st = dr;
break;
}
}
else {
m.clear();
int tmp = dr - st - 1;
ans += (tmp * (tmp + 1))/ 2;
st = dr;
m[v[st]] = 1;
diferite = 1;
}
}
return ans;
}
int main() {
cin >> n >> l >> u;
for(int i = 1; i <= n; ++i) {
cin >> v[i];
}
cout << res(u) - res(l - 1);
return 0;
}