Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define Woody
- #define int long long
- #define lowbit(x) (x&-x)
- #define rep(n) for(int i=0;i<n;i++)
- #define mp make_pair
- #define eb emplace_back
- #define F first
- #define S second
- #define SZ(a) (int)(a.size())
- #define all(v) v.begin(),v.end()
- #define SETIO(s) ifstream cin(s+".in");ofstream cout(s+".out");
- #ifdef Woody
- #define quick ios::sync_with_stdio(0);cin.tie(0);
- #else
- #define quick
- #endif
- #define INF INT64_MAX
- using namespace std;
- typedef pair<int,int> pii;
- int x,y,Range;
- bool ok(int px,int py){
- return px*px<=Range*Range-py*py;
- }
- signed main(){
- quick
- double a,b,c;
- cin>>a>>b>>c;
- x=a*10000;
- y=b*10000;
- Range=c*10000;
- int uy=(y+Range)/10000*10000+10000;
- int dy=(y-Range)/10000*10000-10000;
- int Minx=(x-Range)/10000*10000-10000;
- int Maxx=(x+Range)/10000*10000+10000;
- int ans=0;
- int lx;
- int rx;
- for(int i=uy;i>=dy;i-=10000){
- if(!ok(0,i-y)) continue;
- int l=Minx;
- int r=x;
- while(l+1<r){
- int middle=(l+r)>>1;
- if(ok(middle-x,i-y)) r=middle;
- else l=middle;
- }
- lx=r;
- l=x;
- r=Maxx;
- while(l+1<r){
- int middle=(l+r)>>1;
- if(ok(middle-x,i-y)) l=middle;
- else r=middle;
- }
- rx=l;
- // cout<<i<<":"<<lx<<" "<<rx<<"\n";
- int R;
- int L;
- if(rx>=0){
- R=rx/10000;
- }
- else {
- R=(rx/10000-(rx%10000!=0));
- }
- if(lx>=0){
- L=lx/10000+(lx%10000!=0);
- }
- else {
- L=(lx/10000);
- }
- ans+=R-L+1;
- }
- cout<<ans<<"\n";
- }
Add Comment
Please, Sign In to add comment