kartikkukreja

Bullseye Code Jam 2013 Round 1A

May 3rd, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <cstdio>
  2. #define MAX 1000000000ULL
  3.  
  4. typedef unsigned long long ull;
  5.  
  6. ull r, t;
  7.  
  8. bool infeasible(ull x) {
  9.     return (x + 1)*(2*r + 2*x + 1) > t;
  10. }
  11.  
  12. ull binary_search(ull hi)  {
  13.     ull lo = 0, mid;
  14.     while (lo < hi)  {
  15.       mid = lo + (hi-lo)/2;
  16.       if (infeasible(mid))
  17.          hi = mid;
  18.       else
  19.          lo = mid+1;
  20.     }
  21.     if (!infeasible(lo))
  22.       return -1;
  23.  
  24.     return lo;
  25. }
  26.  
  27. int main()  {
  28.     int T, i;
  29.     ull ans, limit;
  30.  
  31.     freopen("A-large-practice.in", "r", stdin);
  32.     freopen("A-large-practice.txt", "w", stdout);
  33.  
  34.     scanf("%d", &T);
  35.     for(i=1; i<=T; i++)  {
  36.         scanf("%llu %llu", &r, &t);
  37.         limit = 1000000000000000000ULL / r;
  38.         limit = (limit <= MAX) ? limit : MAX;
  39.         ans = binary_search(limit);
  40.         printf("Case #%d: %llu\n", i, ans);
  41.     }
  42.  
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment