Submission
Status:
Compilation Error
Score: 0
User: MisterO
Problemset: Ice cream
Language: cpp
Time: 0.000 second
Submitted On: 2025-04-23 13:02:57
#include<bits/stdc++.h>
#include "ice_cream.h"
//int N, K, coin_used=0, question_asked=0;
//int f[30+5];
//
//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
f[0] = f[1] = 1;
// printf("%d => %d\n",1,f[1]);
for(int i=2;;i++){
f[i] = f[i-1]+f[i-2];
// printf("%d => %d\n",i,f[i]);
if(f[i] > 1000) break;
// if(f[i] > n) break;
}
int l = 1, r = n;
// printf("L M I V R\n");
while(l+1<r){
int mid = l+(r-l)/2;
int idx = std::upper_bound(f+1+2,f+16+1,r-l)-f-1-2;
int val = f[idx]+l;
// printf("%d %d %d %d %d\n",l,mid,idx,val,r);
// printf("qry(%d,%d)\n",l,val);
bool cal = ask(l,val);
if(cal){
r = val;
}else{
l = val+1;
}
}
if(l == r) return l;
else if(ask(l,l)) return l;
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;
//}