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 "grader.h"
#include <iostream>
using namespace std;
int HC(int N){
int low = 1;
int high = N;
int guess = high; // Primeiro palpite é N
int prev = 0;
int response_prev = 0;
int response_prev_prev = 0;
int firstGuess = true;
while (low < high) {
int response = Guess(guess);
if (response == 1) {
if(prev > guess)
high = (guess + high)/2;
if(prev < guess)
low = (guess + low)/2;
}
else if (response == -1) {
if(prev > guess)
low = (guess + low)/2;
if(prev < guess)
high = (guess + high)/2;
}
if(response == -1 && response_prev == 0 && response_prev_prev == 1) {
return prev;
}
prev = guess;
response_prev_prev = response_prev;
response_prev = response;
if(response == 0 && guess == prev) {//Casos especiais
if(firstGuess == true) {
firstGuess = false;
guess = (low + high) / 2;
}
else {
guess = guess + 1;
}
}
if(response != 0) //Padrão
guess = (low + high) / 2;
}
return low;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |