Submission
Status:
(---%-)
Score: 0
User: NovemNotes
Problemset: Ice cream
Language: cpp
Time: 0.002 second
Submitted On: 2025-04-22 16:41:16
#include "ice_cream.h"
int guess(int n) {
int l = 1, r = n;
while (l < r) {
int len = r - l + 1;
if (len <= 3) {
int mid = (l + r) / 2;
if (ask(l, mid)) r = mid;
else l = mid + 1;
continue;
}
int segments = 1;
if (len >= 1000) segments = 6;
else if (len >= 300) segments = 5;
else if (len >= 100) segments = 4;
else if (len >= 20) segments = 3;
else segments = 2;
int step = len / segments;
int found = -1;
for (int i = 0; i < segments; ++i) {
int a = l + i * step;
int b = (i == segments - 1) ? r : (a + step - 1);
if (ask(a, b)) {
l = a;
r = b;
found = i;
break;
}
}
if (found == -1) break;
}
return l;
}