Pagini recente » Cod sursa (job #726119) | Cod sursa (job #3227656) | Cod sursa (job #2969243) | Cod sursa (job #2579558) | Cod sursa (job #1525094)
#include <fstream>
#include <cstring>
#include <map>
#define NMAX 1500000
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
long long n , p , u , v[NMAX] , sol[NMAX];
map <long long , long long> c;
long long solve(long long val);
int main() {
f >> n >> p >> u;
for(int i = 1 ; i <= n ; ++i) {
f >> v[i];
}
g << solve(u) - solve(p - 1);
return 0;
}
long long solve(long long val) {
long long ans = 0 , nr = 1;
if(val == 0) {
return 0;
}
for(int i = 1 ; i <= n ; ++i) {
c[v[i]] = 0;
}
memset(sol , 0 , sizeof(sol));
sol[1] = 1;
c[v[1]] = 1;
for(int i = 2 ; i <= n ; ++i) {
if(c[v[i]] == 0) {
++nr;
}
++c[v[i]];
sol[i] = sol[i - 1];
if(nr > val) {
long long aux = sol[i];
sol[i] += c[v[aux]];
c[aux] = 0;
--nr;
}
}
for(int i = 1 ; i <= n ; ++i) {
ans += (i - sol[i] + 1);
}
return ans;
}