Submission
Status:
(PPPPP)
Score: 100
User: MisterO
Problemset: Ice cream
Language: cpp
Time: 0.002 second
Submitted On: 2025-04-23 13:48:26
#include<bits/stdc++.h>
#include "ice_cream.h"
using namespace std;
//int N, K, coin_used=0, question_asked=0;
//bool ask(int L, int R) {
// question_asked++;
// if(question_asked > 25) {
// printf("Ask too many times!");
// exit(0);
// }
// if(L > R || L < 1 || R > N) {
// printf("Invalid question!");
// exit(0);
// }
// if(L <= K && R >= K) {
// coin_used += 2;
// return true;
// } else {
// coin_used++;
// return false;
// }
//}
int guess(int n) {
// write your solution here
int f[30+5];
int i=1; //Fibonacci Search
f[0] = f[1] = 1;
do{
i++;
f[i] = f[i-1]+f[i-2];
}while(f[i]<=n);
int offset = 0;
int l = 1, r = n;
while(l+1<r){
int idx = min(offset+f[i-2],n);
// cout<<l<<' '<<idx<<' '<<r<<'\n';
if(ask(l,idx)){
r = idx;
i -= 2;
}else{
l = idx+1;
i -= 1;
offset = idx;
}
}
if(l == r) return l;
else if(ask(l,l)) return l;
else return r;
}
//int main(int argc, char** argv) {
// scanf("%d %d", &N, &K);
// int num = guess(N);
// if(num != K) {
// printf("Wrong answer: expected %d but found %d", K, num);
// } else {
// printf("Correct answer: %d coin used", coin_used);
// }
// return 0;
//}