Pagini recente » Asociatia infoarena | Cod sursa (job #3278249) | Cod sursa (job #2490820) | Cod sursa (job #628272) | Cod sursa (job #1459254)
#include<cstdio>
#include<unordered_map>
#define dim (1<<20) + 2
using namespace std;
int n,L,U,x,i;
long long int a, b;
unsigned int v[dim];
unordered_map<unsigned int,unsigned int> H;
inline long long int Secv(int nr)
{
long long int rez = 0, i, j;
for(i = 0, j = 0; i < n; ++i)
{
++H[v[i]];
while( H.size() > nr )
{
--H[v[j]];
if( !H[v[j]] )
H.erase(v[j]);
++j;
}
rez += 1LL * ( i - j + 1 );
}
return rez;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%d %d %d", &n, &L, &U);
for ( i = 0; i < n; i++)
scanf("%d", &v[i]);
a= Secv(U); H.clear();
b= Secv(L - 1);
printf("%lld\n", a - b);
}