Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.66 KB | None | 0 0
  1. int GetThrowingFloor(int n) {
  2.   int l = -1;
  3.   int r = 33335;
  4.  
  5.   while (l < r) {
  6.     int m = (l + r) / 2;
  7.     if (m * (m + 1) / 2 >= n) {
  8.       r = m;
  9.     } else {
  10.       l = m;
  11.     }
  12.   }
  13.  
  14.   int cur_pos = 1;
  15.   int cur_pp = r;
  16.  
  17.   while (cur_pos <= n) {
  18.     if (cur_pos + cur_pp - 1 > n) {
  19.       while ((cur_pos <= n) && (!CheckFloor(cur_pos))) {
  20.         cur_pos++;
  21.       }
  22.       break;
  23.     } else {
  24.       if (CheckFloor(cur_pos + cur_pp - 1)) {
  25.         while (!CheckFloor(cur_pos)) {
  26.           cur_pos++;
  27.         }
  28.         break;
  29.       } else {
  30.         cur_pos += cur_pp;
  31.         cur_pp--;
  32.       }
  33.     }
  34.   }
  35.   return (cur_pos % (n + 1));
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement