Advertisement
urmisaha

Samsung-Binary Search

Nov 6th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include <iostream>
  2. #define ll long long
  3. using namespace std;
  4.  
  5. // Input:
  6. // 2 3 4 42
  7.  
  8. // Output:
  9. // 2
  10.  
  11. ll a, b, c, k, l, r, mid, val;
  12.  
  13. ll log2n(ll x){
  14.     return (x > 1) ? (1 + log2n(x/2)) : 0;
  15. }
  16.  
  17. ll cal(ll x){
  18.     return (a*x) + (b*log2n(x)*x) + (c*x*x*x);
  19. }
  20.  
  21. ll binSearch(ll low, ll high){
  22.     mid = (low + high)/2;
  23.     ll v = cal(mid);
  24.     if(v == k)
  25.         return mid;
  26.     if(low == high)
  27.         return 0;
  28.     else if(v > k)
  29.         return binSearch(low, mid-1);
  30.     else
  31.         return binSearch(mid+1, high);
  32. }
  33.  
  34. ll solve(){
  35.     l = 0;
  36.     r = 1;
  37.     while(l < r){
  38.         val = cal(r);
  39.         if(val == k)
  40.             return r;
  41.         if(val < k){
  42.             l = r;
  43.             r *= 2;
  44.         }
  45.         else
  46.             return binSearch(l, r);
  47.     }
  48. }
  49.  
  50. int main() {
  51.     cin>>a>>b>>c>>k;
  52.     cout<<solve();;
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement