Pagini recente » Cod sursa (job #1545458) | Cod sursa (job #139258) | Cod sursa (job #1831559) | Cod sursa (job #930576) | Cod sursa (job #2877077)
#include <iostream>
#include <fstream>
#include <unordered_map>
#define N (1<<20) + 1
#define uint unsigned int
using namespace std;
unordered_map<uint, uint> mp;
uint n, v[N], f[N];
ifstream fin("secv5.in");
ofstream fout("secv5.out");
uint sol(uint x) {
if(x == 0) return 0;
memset(f, 0, sizeof(f));
uint cnt = 0, dist = 0, i, j;
i = 0;
for(j = 0; j < n; j++) {
if(f[v[j]] == 0)
dist++;
f[v[j]]++;
if(dist > x) {
while(dist > x) {
f[v[i]]--;
if(f[v[i]] == 0)
dist--;
i++;
}
}
cnt = cnt + j - i + 1;
}
return cnt;
}
int main() {
uint l, u, cnt;
fin >> n >> l >> u;
cnt = 0;
for(uint i = 0; i < n; i++) {
fin >> v[i];
if(mp[v[i]] == 0) {
cnt++;
mp[v[i]] = cnt;
v[i] = cnt;
} else {
v[i] = mp[v[i]];
}
}
fout << sol(u) - sol(l - 1) << endl;
return 0;
}