This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "cycle.h"
#include <bits/stdc++.h>
using namespace std;
int cnt_jump = 0;
bool my_jump(int x) {
   ++cnt_jump;
//   cout << "Salto #" << cnt_jump << " x = " << x << endl;
   bool res = jump(x);
   return res;
}
void escape(int n) {
   cnt_jump = 0;
   if (n == 2) {
      my_jump(1);
      return;
   }
   bool flag = my_jump(0);
   if (!flag) {
      // inicialmente, estoy en la zona de F
      int lo = 1, hi = n/2;
//      if (n % 2 == 0) hi = n / 2 - 1;
//      else hi = n / 2;
      bool salto_anterior_verdadero = false;
      int salto_anterior = 0;
      while (lo <= hi) {
         int mid = lo + (hi - lo) / 2;
         int x;
         if (salto_anterior_verdadero)
            x = n - salto_anterior + mid;
         else
            x = mid - salto_anterior;
         if (my_jump(x)) {
            hi = mid - 1;
            salto_anterior_verdadero = true;
         }
         else {
            lo = mid + 1;
            salto_anterior_verdadero = false;
         }
         salto_anterior = mid;
      }
      if (salto_anterior_verdadero)
         my_jump(n / 2);
      else
         my_jump(n / 2 + 1);
   }
   else {
      // inicialmente, estoy en la zona de T
      int lo = 1, hi = n/2;
      bool salto_anterior_verdadero = false;
      int salto_anterior = 0;
      while (lo <= hi) {
         int mid = lo + (hi - lo) / 2;
         int x;
         if (salto_anterior_verdadero)
            x = n - salto_anterior + mid;
         else
            x = mid - salto_anterior;
         x %= n;
         if (x < 0) x += n;
         if (my_jump(x)) {
            lo = mid + 1;
            salto_anterior_verdadero = true;
         }
         else {
            hi = mid - 1;
            salto_anterior_verdadero = false;
         }
         salto_anterior = mid;
      }
      if (salto_anterior_verdadero) {
         // no tengo que saltar
      }
      else
         my_jump(n - 1);
   }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |