hiho week 111 register

Ended

Participants:456

Verdict:Accepted
Score:100 / 100
Submitted:2016-08-16 22:27:29

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <math.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
    double x,y,r;
    cin>>x>>y>>r;
    double min_x=ceil(x-r),max_x=floor(x+r);
    int resx,resy;
    double max_dis=0;
    for (int tmpx=max_x;tmpx>=min_x;--tmpx)
    {
        double dy=sqrt(r*r-(x-tmpx)*(x-tmpx));
        double min_y=ceil(y-dy),max_y=floor(y+dy);
        double dis=(tmpx-x)*(tmpx-x)+(max_y-y)*(max_y-y);
        if (dis>max_dis){
            resx=tmpx;
            resy=max_y;
            max_dis=dis;
        }
        dis=(tmpx-x)*(tmpx-x)+(min_y-y)*(min_y-y);
        if (dis>max_dis){
            resx=tmpx;
            resy=min_y;
            max_dis=dis;
        }
    }
    cout<<resx<<" "<<resy<<endl;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX