problem Link
Following is my binary search solution based on editorial here.
My solution is failing on 5 test cases . Please help me to debug .
//To debug : g++ -g file.cpp -o code
//to flush output : fflush(stdout) or cout.flush()
//cout<<setprecision(p)<<fixed<<var
//use 1LL<<i to for 64 bit shifting , (ll)2 because by default 2 is ll
//take care of precedence rule of operators
//do not forget to change the sizes of arrays and value of contants and other things after debugging
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i,a,n) for(i=a;i<n;++i)
#define irep(i,n,a) for(i=n;i>a;--i)
#define mod 1000000007
#define pb push_back
#define big 9223372036854775807
#define big1 LONG_MAX
#define big2 ll_MAX
#define big3 1000000000
#define sma1 LONG_MIN
#define sma2 ll_MIN
#define sma3 -1000000000
#define mp make_pair
#define dub double
#define ivec vector<ll>
#define lvec vector<long long>
#define cvec vector<char>
#define svec vector<string>
#define mt make_tuple
#define MOD 998244353
#define ld long double
#define pi acos(-1.0)
#define SZ(x) (ll)(x.size())
//comment the below if not required
/*
#define ss second.second
#define ff first.first
#define f first
#define s second
#define sf second.first
#define fs first.second
*/
#define IOS std::ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
//cout<<"Case #"<<c<<": "<<ans<<"\n" ;
ld x,y,r;
ll xc,yc,rc,ans;
ll solve(ll X)
{
ll l,r,m,L1=LLONG_MIN,val,R1=LLONG_MIN;
l = yc , r = yc+rc ;
while(l<=r)
{
m = (l+r)/2;
val = (m-yc)*(m-yc)+(X-xc)*(X-xc);
if(val<=(rc*rc))
{
R1 = m;
l = m+1;
}
else
r = m-1;
}
r = yc , l = yc-rc;
while(l<=r)
{
m = (l+r)/2;
val = (m-yc)*(m-yc)+(X-xc)*(X-xc);
if(val<=(rc*rc))
{
L1 = m;
r = m-1;
}
else
l = m+1;
}
if(L1<=R1 && L1!=LLONG_MIN && R1!=LLONG_MIN)
return (floor(((ld)R1)/1e4)-ceil(((ld)L1)/1e4)+1);
else
return 0;
}
int main()
{
IOS;
cin>>x>>y>>r;
xc = x*1e4;
yc = y*1e4;
rc = r*1e4;
ll i;
i = floor(((xc+rc)/1e4))*1e4;
for(;i>=(xc-rc);i-=1e4)
{
ans+=solve(i);
}
cout<<ans;
return 0;
}