Pagini recente » Cod sursa (job #198083) | Cod sursa (job #1238536) | Cod sursa (job #293745) | Cod sursa (job #1460927) | Cod sursa (job #1525192)
#include <cstdio>
#include <fstream>
#include <cstring>
#include <map>
#define NMAX 1500000
using namespace std;
//ifstream f("secv5.in");
ofstream g("secv5.out");
unsigned int n , p , u , v[NMAX];
map <unsigned int , unsigned int> c;
unsigned int solve(unsigned int val);
int main() {
freopen("secv5.in" , "r" , stdin);
//freopen("secv5.out" , "w" , stdout);
scanf("%d %d %d" , &n , &p , &u);//
//f >> n >> p >> u;
for(int i = 1 ; i <= n ; ++i) {
scanf("%d" , &v[i]);//
//f >> v[i];
}
long long sol = solve(u) - solve(p - 1);
//printf("%lld" , sol);
g << sol;
return 0;
}
unsigned int 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]] == 0) {
c.erase(v[nr]);
}
++nr;
}
long long aux = i - nr + 1;
ans = ans + aux;
}
return ans;
}