Pagini recente » Cod sursa (job #1178497) | Cod sursa (job #1877108) | Cod sursa (job #1255778) | Cod sursa (job #85401) | Cod sursa (job #1525219)
#include <cstdio>
//#include <fstream>
#include <cstring>
#include <unordered_map>
#define NMAX 1500000
using namespace std;
//ifstream f("secv5.in");
//ofstream g("secv5.out");
long long n , p , u;
unsigned int v[NMAX];
unordered_map <unsigned int , unsigned int> c;
long long solve(unsigned int val);
int main() {
freopen("secv5.in" , "r" , stdin);
freopen("secv5.out" , "w" , stdout);
scanf("%lld %lld %lld" , &n , &p , &u);//
//f >> n >> p >> u;
for(int i = 1 ; i <= n ; ++i) {
scanf("%ud" , &v[i]);//
//f >> v[i];
}
long long sol = solve(u) - solve(p - 1);
printf("%lld" , sol);
return 0;
}
long long solve(unsigned int val) {
long long ans = 0 , nr = 1;
if(val == 0) {
return 0;
}
c.clear();
for(int i = 1 ; i <= n ; ++i) {
++c[v[i]];
int x = c.size();
while(c.size() > val) {
--c[v[nr]];
if(!c[v[nr]]) {
c.erase(v[nr]);
}
++nr;
}
ans += (i - nr + 1) * 1LL;
}
return ans;
}