Please help in QHOUSE

Problem link : https://www.codechef.com/LRNDSA04/problems/QHOUSE/

I am getting partially correct answer with this code. Even one case with original constraints is passing. Please tell if you can spot the error.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){
	int r = 100l,l=0,sq_side;
	ll area;
	sq_side = (l+r)/2;
	while(sq_side>l)
    {
        string s;

        cout<<"? "<<sq_side<<" 0"<<endl<<flush;
        cin >> s;

        if(s == "YES")
            l = sq_side;
        else
            r = sq_side;

        sq_side = (l+r)/2;
    }
    area = 4*sq_side*sq_side;
    int y = 2 * sq_side, tri_base;
    r = 1001; l = sq_side;
    tri_base = (l+r)/2;
    while(tri_base>l)
    {
        string s;

        cout<<"? "<<tri_base<<" "<<y<<endl<<flush;
        cin >> s;

        if(s == "YES")
            l = tri_base;
        else
            r = tri_base;

        tri_base = (l+r)/2;
    }

    l = y, r = 1001;
    int tri_height;
    tri_height = (l+r)/2;
    while(tri_height>l)
    {
        string s;

        cout<<"? 0 "<<tri_height<<endl<<flush;
        cin >> s;

        if(s == "YES")
            l = tri_height;
        else
            r = tri_height;

        tri_height = (l+r)/2;
    }
    area += tri_base * (tri_height - y);

    cout<<"! "<<area<<endl<<flush;

	return 0;
}

hi , my code is almost same and have thesame logic and it runs perfectly , only difference is in the while condition
Mysolution
my condition is basically is to make the range of points as small as can ( either 1(l==r) we got the point itself or 2 (r == l+1) means we have 2 points to check)

yy

Sorry I dont understand what you mean by ‘yy’.