fork download
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<vector>
  4. #include<algorithm>
  5.  
  6. using namespace std;
  7.  
  8. vector<int> vals(465);
  9. vector<int>::iterator it;
  10.  
  11. void initalize()
  12. {
  13. int x=0;
  14. for(int i=0;i<=30;i++)
  15. {
  16. for(int j=i+1;j<=30;j++)
  17. {
  18. vals[x] = (1<<i) + (1<<j) ;
  19. x++;
  20. }
  21. }
  22. sort(vals.begin(),vals.end());
  23. /*for(vector<int>::iterator it=vals.begin();it!=vals.end();it++)
  24. {
  25. cout<<*it<<" ";
  26. }*/
  27. }
  28. int BS(int L,int R,int x,int prev,int current)
  29. {
  30. if(R >= L)
  31. {
  32. int mid = L + (L+(R-L)/2);
  33. if(vals[mid]==x)
  34. return 0;
  35. else if(vals[mid]>x)
  36. {
  37. prev = vals[mid];current= vals[mid]-1;
  38. return BS(L,vals[mid]-1,x,prev,current);
  39. }
  40. else if(vals[mid]<x)
  41. {
  42. prev = vals[mid];current= vals[mid]+1;
  43. return BS(vals[mid]+1,R,x,prev,current);
  44. }
  45. }
  46. else
  47. {
  48. int rem1,rem2;
  49. if(prev <=x)
  50. rem1= x-prev;
  51. else
  52. rem1 = prev - x;
  53. if(current <=x)
  54. rem2 = x-current;
  55. else
  56. rem2 = current-x;
  57. if(rem1>=rem2)
  58. return rem2;
  59. else
  60. return rem1;
  61. }
  62. }
  63.  
  64. int main()
  65. {
  66. initalize();
  67. int t;
  68. scanf("%d\n",&t);
  69. while(t--)
  70. {
  71. printf("hel\n");
  72. int n;
  73. scanf("%d\n",&n);
  74. it = find(vals.begin(),vals.end(),n);
  75. if(it!=vals.end())
  76. printf("0");
  77. else
  78. {
  79. printf("hello\n");
  80. int prev=0,L=0,R=465,x=n,current=0;
  81. int c=BS(L,R,x,prev,current);
  82. cout<<c<<endl;
  83. }
  84.  
  85.  
  86. }
  87. return 0;
  88. }
Runtime error #stdin #stdout 0s 4312KB
stdin
3
10
22
4
stdout
Standard output is empty