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;
}