Pagini recente » Cod sursa (job #2564464) | Cod sursa (job #505074) | Cod sursa (job #1388580)
#include <cstdio>
#include <unordered_map>
#include <vector>
using namespace std;
FILE *fin=freopen("secv5.in","r",stdin);
FILE *fout=freopen("secv5.out","w",stdout);
unordered_map <unsigned int,unsigned int> HASH;
vector <unsigned int> v;
int n, L, U;
void Read()
{
unsigned int i, x;
scanf("%d %d %d", &n, &L, &U);
for(i = 1; i <= n; ++i)
{
scanf("%d", &x);
v.push_back(x);
}
}
inline long long int Secv(int nr)
{
long long int ret = 0;
int i, p1;
for(i = 0, p1 = 0; i < n; ++i)
{
++HASH[v[i]];
while( HASH.size() > nr )
{
--HASH[v[p1]];
if( HASH[v[p1]] == 0)
HASH.erase(v[p1]);
++p1;
}
ret += 1LL * ( i - p1 + 1 );
}
return ret;
}
void Solve()
{
long long int a, b;
a = Secv(U); HASH.clear();
b = Secv(L - 1);
printf("%lld", a - b);
}
int main()
{
Read();
Solve();
return 0;
}