Pagini recente » Cod sursa (job #1272405) | Cod sursa (job #373723) | Cod sursa (job #2329983) | Cod sursa (job #1751991) | Cod sursa (job #775518)
Cod sursa(job #775518)
#include<cstdio>
#include<utility>
#include<algorithm>
using namespace std;
int used[1000002],x[1000002],n,L,U,i;
pair < unsigned , int > a[1000002];
inline int numar(int k)
{
int r,l,nr;
int nrused;
nrused=0;
nr=0;
for (r=l=0;r<n;r++)
{
if (used[x[r]]==0)
{
nrused++;
}
used[x[r]]++;
while(nrused>k)
{
used[x[l]]--;
if (used[x[l]]==0)
nrused--;
l++;
}
nr+=r-l+1;
}
return nr;
}
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("%u",&a[i].first);
a[i].second=i;
}
sort(a,a+n);
int j=0;
x[a[0].first]=0;
for (i=1;i<n;i++)
{
if (a[i].first!=a[i-1].first)
{
j++;
}
x[a[i].second]=j;
}
j=numar(L-1);
printf("%d\n",numar(U)-j);
return 0;
}