Pagini recente » Cod sursa (job #2923598) | Cod sursa (job #2567953) | Cod sursa (job #1987511) | Cod sursa (job #2873068) | Cod sursa (job #9884)
Cod sursa(job #9884)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 262144
unsigned int sir[Nmax], n, l, u, i, j, k, ind[Nmax], inv[Nmax], v[Nmax], ct;
long long sol;
void citire()
{
scanf("%lld %lld %lld\n", &n, &l, &u);
for (i=1; i<=n; ++i)
scanf("%lld\n", &sir[i]);
}
int cmp(const int a, const int b)
{
return sir[a] < sir[b];
}
void solve()
{
for (i=1; i<=n; ++i)
ind[i] = i;
sort(ind + 1, ind + n + 1, cmp);
for (i=1; i<=n; ++i)
inv[ind[i]] = i;
for (i=1; i<=n; ++i)
if (sir[ind[i]] == sir[ind[i-1]])
inv[ind[i]] = inv[ind[i-1]];
for (i=1; i<=n; ++i)
{
ct = 0;
for (j=i; j<=n; ++j)
{
if (v[inv[j]] == 0)
ct++;
v[inv[j]]++;
if (l <= ct && ct <= u)
sol++;
if (ct > u)
break;
}
for (k=i; k<=j; ++k)
v[inv[k]] = 0;
}
printf("%lld\n", sol);
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
citire();
solve();
return 0;
}