fork download
  1. #include<stdio.h>
  2. int main()
  3. {
  4. long long int nq,x,y,px,py,q,t,i,xindex,yindex,pindex,el[31],ans,ter,len; char a,s[6]; int lc=1;
  5. el[0]=0; el[1]=1;el[2]=3;el[3]=7;el[4]=15;el[5]=31;el[6]=63;el[7]=127;el[8]=255;el[9]=511;el[10]=1023;el[11]=2047;el[12]=4095;el[13]=8191;el[14]=16383;el[15]=32767;el[16]=65535;el[17]=131071;el[18]=262143;el[19]=524287;el[20]=1048575;el[21]=2097151;el[22]=4194303;el[23]=8388607;el[24]=16777215;el[25]=33554431;el[26]=67108863;el[27]=134217727;el[28]=268435455;el[29]=536870911;el[30]=1073741823;
  6. scanf("%lld",&nq);
  7. while((a = getchar()) != '\n' && a != EOF);
  8. while(nq>0)
  9. {
  10. scanf("%s",&s);
  11. if(!(s[1]-'i')){ lc=!lc;}
  12. else
  13. { scanf("%lld %lld",&x,&y);
  14. // printf("%lld %lld",x,y);
  15. px=x;py=y;
  16. while(px!=py) { if(px>py){px/=2;} else py/=2; }
  17. for(i=0;i<31;i++)
  18. {
  19. if((el[i]<x)&&(el[i+1]>=x))
  20. { xindex=i+1;}
  21. if((el[i]<y)&&(el[i+1]>=y))
  22. { yindex=i+1;}
  23. if((el[i]<py)&&(el[i+1]>=py))
  24. { pindex=i+1;}
  25. }
  26. //printf("%lld",nq);
  27. ans=0;
  28. len=xindex+yindex-2*pindex+1;
  29. if(xindex%2==lc) ans=1;
  30. ans+=(len)/2;
  31. if(s[1]-'b'){ans=len-ans;}
  32. printf("%lld\n",ans);
  33. }
  34. nq--;
  35. }
  36. return 0;
  37. }
  38.  
Success #stdin #stdout 0s 3300KB
stdin
2
Qb 1 2
Qr 1 2
stdout
2
0