#include <iostream>
#include <cmath>
using namespace std;
struct node
{
double x,y;
};
node p[100010];
double f(node a,node b,node c)
{
return 0.5*(a.x*b.y-b.x*a.y+b.x*c.y-c.x*b.y);
}
double qiu(node m,node n)
{
return sqrt((m.x-n.x)*(m.x-n.x)+(m.y-n.y)*(m.y-n.y));
}
int main()
{
int n;cin>>n;
double sum=0,t,ans=0;
node ansnode;
for(int i=0;i<n;++i)
{
cin>>p[i].x>>p[i].y;
}
for(int i=0;i<n-1;++i)
{
int j=i+1;
sum=sum+(p[i].x*p[j].y-p[j].x*p[i].y);
}
sum*=0.5;
t=sum*0.5;
node a,b,c;
cout<<endl;
for(int i=0;i<n-1;i+=2)
{
node a,b,c;
a.x=p[i].x;
a.y=p[i].y;
b.x=p[i+1].x;
b.y=p[i+1].y;
c.x=p[i+2].x;
c.y=p[i+2].y;
ans+=f(a,b,c);
if(ans==t)
{
ansnode.x=c.x;
ansnode.y=c.y;
printf("%0.6lf",qiu(ansnode,p[0]));
break;
}
if(ans>t)
{
double pp=(ans-t)/sum;
if(a.y==b.y)
{
ansnode.y=b.y;
ansnode.x=b.x*pp;
}
else if(a.x==b.x)
{
ansnode.x=b.x;
ansnode.y=b.y*pp;
}
cout<<ansnode.x<<" "<<ansnode.y<<endl;
printf("%0.6lf",qiu(ansnode,c));
break;
}
}
return 0;
}
存一下