Pagini recente » Cod sursa (job #1587553) | Cod sursa (job #2554564) | Prezentare infoarena | Cod sursa (job #381331) | Cod sursa (job #1971318)
#include <fstream>
#include <vector>
#define NMAX (( 1 << 20) + 2)
#include <unordered_map>
using namespace std;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
unsigned int v[NMAX];
unordered_map < unsigned int, int > ap;
unordered_map < unsigned int, int > ap1;
int main (){
int l, u, n;
fin >> n >> l >> u;
for (int i = 1; i <= n; ++i)
fin >> v[i];
int st = 1;
long long rez1 = 0;
for (int dr = 1; dr <= n; ++dr){
ap[v[dr]]++;
while (ap.size() > u){
ap[v[st]]--;
if (!ap[v[st]])
ap.erase(v[st]);
st++;
}
rez1 = rez1 + dr - st + 1;
}
st = 1;
long long rez2 = 0;
for (int dr = 1; dr <= n; ++dr){
ap1[v[dr]]++;
while (ap1.size() >= l){
ap1[v[st]]--;
if (!ap1[v[st]])
ap1.erase(v[st]);
st++;
}
rez2 = rez2 + dr - st + 1;
}
fout << rez1 - rez2 << "\n";
return 0;
}