Pagini recente » Rezultatele filtrării | Cod sursa (job #2849023) | Cod sursa (job #2888961) | Cod sursa (job #76875) | Cod sursa (job #3301915)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int n;
long long v[10000005];
long long twop(int mx)
{
unordered_map<long long, int> mep;
long long c = 0, nr = 0;
int s = 0, d = 0;
while (d < n)
{
mep[v[d]]++;
if (mep[v[d]] == 1)
nr++;
d++;
while (nr > mx)
{
// cout<<s<<" "<<d<<'\n';
mep[v[s]]--;
if (mep[v[s]] == 0)
{
nr--;
mep.erase(v[s]);
}
s++;
}
c = c + d - s;
}
// cout<<c<<"\n";
return c;
}
int main()
{
int l, u;
fin >> n >> l >> u;
for (int i = 1; i <= n; i++)
{
fin >> v[i];
}
fout << twop(u) - twop(l - 1);
}