Pagini recente » Cod sursa (job #2640171) | Cod sursa (job #2128408) | Cod sursa (job #3270012) | Cod sursa (job #2810454) | Cod sursa (job #2469369)
#include <map>
#include <stdio.h>
#define maxMemory 1 << 20 + 5
using namespace std;
int v[maxMemory], N, L, U;
map <int , int> mapp;
long long solve(int disElem)
{
long long result = 0;
int st,dr;
st = dr = 1;
mapp.clear();
for(dr = 1; dr <= N; dr++)
{
mapp[v[dr]]++;
while(mapp.size() > disElem)
{
mapp[v[st]]--;
if(mapp[v[st]] == 0)
mapp.erase(v[st]);
st++;
}
result = 1LL * result + dr - st + 1;
}
return result;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%d%d%d",&N,&L,&U);
for(int i = 1; i <= N; i++)
scanf("%d",&v[i]);
printf("%lld\n",solve(U) - solve(L - 1));
return 0;
}