Try This
My Answer Link: CodeChef: Practical coding for everyone
import java.io.*;
import java.util.*;
class BearHouseQueries {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int low = 0;
int high = 1000;
int mid = 0;
String input = "";
mid = low + (high - low) / 2;
while(high >= low){
System.out.println("? " + mid + " 0");
System.out.flush();
input = br.readLine();
if(input.equals("YES")){
low = mid + 1;
mid = low + (high - low) / 2;
}
else{
high = mid - 1;
mid = low + (high - low) / 2;
}
}
mid = mid - 1;
int length = mid * 2;
low = mid;
high = 1000;
mid = low + (high - low) / 2;
while(high >= low){
System.out.println("? " + mid + " " + length);
System.out.flush();
input = br.readLine();
if(input.equals("YES")){
low = mid + 1;
mid = low + (high - low) / 2;
}
else{
high = mid - 1;
mid = low + (high - low) / 2;
}
}
mid = mid - 1;
int base = mid * 2;
low = length;
high = 1000;
mid = low + (high - low) / 2;
while(high >= low){
//mid = low + (high - low) / 2;
System.out.println("? 0 " + mid);
System.out.flush();
input = br.readLine();
if(input.equals("YES")){
low = mid + 1;
mid = low + (high - low) / 2;
}
else{
high = mid - 1;
mid = low + (high - low) / 2;
}
}
mid = mid - 1;
int heightoft = mid - length;
int area = (int)((length * length) + (heightoft * base * 0.5));
System.out.println("! " + area);
}
}
Its In Java