Pagini recente »
Cod sursă (job #741681)
|
Cod sursă (job #521928)
|
Rating Christian Brandon (Brandon_2)
|
Istoria paginii runda/clasa6_1/clasament
|
Cod sursă (job #108994)
Cod sursă (job
#108994)
#include <cstdio>
int v[10010];
int ptr[17];
int constructor(int a)
{
int x=0;
int r,c=1,i=0;
while(c)
{
c=a/2;
r=a%2;
x=x+ptr[i]*r;
i++;
a=c;
}
return x;
}
void init()
{
int i,a=1;
ptr[0]=1;
for(i=1;i<=15;i++)
{
ptr[i]=a*3;
a*=3;
}
for(i=1;i<=10000;i++)
{
v[i]=constructor(i);
}
}
int ctbnrx(int x)
{
int st,dr;
dr=10000;
st=1;
while(st!=dr-1)
{
if(x<v[(st+dr)/2]) dr=(st+dr)/2;
if(x>v[(st+dr)/2]) st=(st+dr)/2;
if(x==v[(st+dr)/2]) return (st+dr)/2+1;
}
return dr;
}
int ctbnry(int x)
{
int st,dr;
dr=10000;
st=1;
while(st!=dr-1)
{
if(x<v[(st+dr)/2]) dr=(st+dr)/2;
if(x>v[(st+dr)/2]) st=(st+dr)/2;
if(x==v[(st+dr)/2]) return (st+dr)/2-1;
}
return st;
}
int main()
{
FILE *in,*out;
in=fopen("trei.in","r");
out=fopen("trei.out","w");
int n,p;
fscanf(in,"%d%d",&n,&p);
init();
int i,x,y,r=0;
for(i=1;i<=n;i++)
{
fscanf(in,"%d%d",&x,&y);
x--;
y++;
if(ctbnry(y)-ctbnrx(x)+1>=p)
r++;
}
fprintf(out,"%d",r);
return 0;
}