Pagini recente » Cod sursa (job #223187) | Cod sursa (job #1615910) | Cod sursa (job #1461077) | Cod sursa (job #666839) | Cod sursa (job #1727452)
#include <unordered_map>
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
unordered_map <unsigned int, int> marcat;
const int maxn = (1 << 20) + 5;
unsigned int v[maxn];
int n, l, u;
long long count_substrings(int p)
{
int num = 0;
long long dim = 0;
for(int st = 1, dr = 1; dr <= n; dr++)
{
if(!marcat[v[dr]])
dim++;
marcat[v[dr]]++;
while(dim > p)
{
marcat[v[st]]--;
if(!marcat[v[st]])
dim--;
st++;
}
num = num + dr - st + 1;
}
return num;
}
int main()
{
in >> n >> l >> u;
for(int i = 1; i <= n; i++)
in >> v[i];
long long aux = count_substrings(u);
marcat.clear();
out << aux - count_substrings(l - 1) << "\n";
return 0;
}