Pagini recente » Cod sursa (job #1351758) | Cod sursa (job #1404939) | Cod sursa (job #1049377) | Cod sursa (job #356071) | Cod sursa (job #2655851)
#include <fstream>
#include <unordered_map>
using namespace std;
const int NMAX = 1 << 20;
unsigned int v[1 + NMAX];
unordered_map<unsigned int, int> hm;
int n;
long long int calcSecv(int maxim)
{
int count = 0;
long long int nrSecv = 0;
for (int st = 1, dr = 1; dr <= n; dr++)
{
hm[v[dr]]++;
if (hm[v[dr]] == 1)
{
count++;
}
while (count > maxim)
{
hm[v[st]]--;
if (hm[v[st]] == 0)
{
count--;
}
st++;
}
nrSecv += dr - st + 1;
}
return nrSecv;
}
int main()
{
ifstream in("secv5.in");
ofstream out("secv5.out");
int l, u;
in >> n >> l >> u;
for (int i = 1; i <= n; i++)
{
in >> v[i];
}
long long calcU, calcL;
calcU = calcSecv(u);
for (auto it = hm.begin(); it != hm.end(); it++)
{
it->second = 0;
}
calcL = calcSecv(l - 1);
out << calcU - calcL;
return 0;
}