Submission

Status:
(-----)

Score: 0

User: NovemNotes

Problemset: Ice cream

Language: cpp

Time: 0.001 second

Submitted On: 2025-04-25 15:46:00

#include "ice_cream.h"

int guess(int n) {
    int l = 1, r = n;
    int fib[100];
    fib[0] = fib[1] = 1;
    int idx=2;
    while(fib[idx-1]<=n){
        fib[idx] = fib[idx-1] + fib[idx-2];
        idx++;
    }
    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 fi = idx-1;
        while(fib[fi]>len){
            fi--;
        }
        int mid = l+fib[fi]-1;
        if(ask(l,mid)){
            r = mid;
        }else{
            l = mid+1;
        }
    }
    return l;
}