Pagini recente » Cod sursa (job #357527) | Cod sursa (job #277964) | Cod sursa (job #2243479) | Rating Anton Lavrov (alavrov) | Cod sursa (job #210757)
Cod sursa(job #210757)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#define NMAX 2097152
using namespace std;
unsigned long in,sf,i,j,n,m,k,l,a,b,c,y[NMAX];
unsigned long z[NMAX];
char cc,ss[32];
long long s;
struct kkt
{
unsigned long X,Y;
};
kkt x[NMAX];
/*int sort(const void *a, const void *b)
{
kkt x=*(kkt *)a , y=*(kkt *)b;
if (x.X<y.X)
return -1;
if (x.X>y.X)
return 1;
return 0;
} */
int ssort(const kkt a,const kkt b)
{
return (a.X<b.X);
}
long long kkt(unsigned long m)
{
long long s=0;
in=1;
sf=1;
z[y[1]]=1;
k=1;
while (in<=sf||sf<n)
{
while (k<=m&&sf<=n)
{
sf++;
if (!z[y[sf]])
k++;
z[y[sf]]++;
}
z[y[sf]]--;
sf--;
k--;
s+=sf-in+1;
z[y[in]]--;
if (z[y[in]]==0)
k--;
in++;
}
return s;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%lu%lu%lu",&n,&b,&c);
/* for (i=1;i<=n;i++)
{
scanf("%lu",&x[i].X);
x[i].Y=i;
}*/
scanf("%c",&cc);
for (i=1;i<=n;i++)
{
gets(ss);
m=strlen(ss)-1;
for (j=0;j<=m;j++)
x[i].X=x[i].X*10+(ss[j]-48);
x[i].Y=i;
}
// qsort(x+1,n,sizeof(x[0]),sort);
sort(x+1,x+n+1,ssort);
k=1;
for (i=1;i<=n;i++)
{
y[x[i].Y]=k;
if (x[i].X!=x[i+1].X)
k++;
}
s=kkt(c);
s-=kkt(b-1);
printf("%lld\n",s);
return 0;
}