Pagini recente » Cod sursa (job #1964093) | Cod sursa (job #2151336) | Cod sursa (job #2086776) | Cod sursa (job #1709386) | Cod sursa (job #9615)
Cod sursa(job #9615)
#include<fstream.h>
#include<conio.h>
#include<math.h>
#define limit 1050000
ifstream f("secv5.in");
ofstream g("secv5.out");
long j,k,tot[3],cf,a[limit],b[limit],n,i,l,u,m;
int v[limit],cont;
int main()
{
tot[0]=tot[1]=tot[2]=0;
f>>n>>l>>u;
f>>a[1];
b[1]=1;
j=1;
cf=0;
for (i=2;i<=n;i++)
{ f>>a[i];
if (a[i]==a[i-1])
{ b[j]++;
i--;
n--;
}
else
{ b[++j]++;
}
}
for(i=1;i<=j;i++)
{ cont=1;
for(k=0;k<=j/32;k++)
v[k]=0;
v[a[i]/32]+=(1<<(a[i]%32));
for(k=1;cont<=u && i+k<=j;k++)
{
if((( v[a[i+k]/32] )&( 1<<a[i+k]))==0)
{ cont++;
v[a[i+k]/32]+=(1<<(a[i+k]%32));
}
if (cont>=l && cont<=u)
{ cf=cf+b[i]*b[i+k];
}
}
tot[1]+=cf;
if (tot[1]>=100000000)
{ tot[2]+=tot[1]/1000000000;
tot[1]=tot[1]%1000000000;
}
}
i=1;j=1;
if(tot[2]==0)
{ g<<tot[1];
}
else
{ cont=0;
g<<tot[2];long z=1000000000;
for(z; z!=0 ;z=z/10, cont++)
if (tot[1]/z!=0)
{
for (j=1;j<cont;j++)
g<<0;
g<<tot[1];
break;
}
}
return 0;
}