Submission #433978

#TimeUsernameProblemLanguageResultExecution timeMemory
433978KoDHotter Colder (IOI10_hottercolder)C++17
78 / 100
1140 ms8124 KiB

#include <bits/stdc++.h>
#include "grader.h"

int rand() {
   static std::default_random_engine gen(std::chrono::system_clock::now().time_since_epoch().count());
   static std::uniform_int_distribution<int> rng(0, 1);
   return rng(gen);
}
 
int HC(int N) {
   int l = 1, r = N, x = 1;
   Guess(x);
   while (l < r) {
      if (rand()) {
         if (x == l) {
            const int t = Guess(r);
            x = r;
            if (t == 0) return (l + r) / 2;
            else if (t == 1) l = (l + r) / 2 + 1;
            else r = (l + r - 1) / 2;
         } else {
            if (x != r) {
               Guess(r);
            }
            const int t = Guess(l);
            x = l;
            if (t == 0) return (l + r) / 2;
            else if (t == 1) r = (l + r - 1) / 2;
            else l = (l + r) / 2 + 1;
         }
      } else {
         if (x == r) {
            const int t = Guess(l);
            x = l;
            if (t == 0) return (l + r) / 2;
            else if (t == 1) r = (l + r - 1) / 2;
            else l = (l + r) / 2 + 1;
         } else {
            if (x != l) {
               Guess(l);
            }
            const int t = Guess(r);
            x = r;
            if (t == 0) return (l + r) / 2;
            else if (t == 1) l = (l + r) / 2 + 1;
            else r = (l + r - 1) / 2;
         }
      }
   }
   return l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...