84 lines
1.2 KiB
C++
84 lines
1.2 KiB
C++
#include<iostream>
|
|
#include<cstdio>
|
|
#include<algorithm>
|
|
#include<cmath>
|
|
using namespace std;
|
|
struct Point
|
|
{
|
|
int x,y;
|
|
}p[4];
|
|
struct Edge
|
|
{
|
|
int x,y,val;
|
|
}e[4];
|
|
int main()
|
|
{
|
|
for(int i=1;i<=3;i++)
|
|
{
|
|
scanf("%d%d",&p[i].x,&p[i].y);//!!!!&
|
|
}
|
|
int sum=0;
|
|
for(int i=1;i<=3;i++)
|
|
{
|
|
int j=i%3+1;
|
|
e[i].x=p[j].x-p[i].x;
|
|
e[i].y=p[j].y-p[i].y;//i,j
|
|
e[i].val=abs(e[i].x)+abs(e[i].y);
|
|
sum+=e[i].val;
|
|
}
|
|
int ans=1;
|
|
for(int i=2;i<=3;i++)
|
|
{
|
|
if(sum-e[i].val<sum-e[ans].val)
|
|
{
|
|
ans=i;
|
|
}
|
|
}
|
|
ans=ans%3+1;
|
|
int j=ans%3+1;
|
|
int tot=0;
|
|
if(e[ans].x!=0) tot++;
|
|
if(e[ans].y!=0) tot++;
|
|
if(e[j].x!=0) tot++;
|
|
if(e[j].y!=0) tot++;
|
|
if(e[j].y*e[ans].y>0)
|
|
{
|
|
tot--;
|
|
}
|
|
printf("%d\n",tot);
|
|
Point now;
|
|
now=p[ans];
|
|
if(e[ans].x!=0)
|
|
{
|
|
// if()
|
|
printf("%d %d ",now.x,now.y);
|
|
now.x+=e[ans].x;
|
|
printf("%d %d\n",now.x,now.y);
|
|
}
|
|
int been=0;
|
|
if(e[ans].y!=0)
|
|
{
|
|
printf("%d %d ",now.x,now.y);
|
|
now.y+=e[ans].y;
|
|
if(e[j].y*e[ans].y>0)
|
|
{
|
|
been=1;
|
|
now.y+=e[j].y;
|
|
}
|
|
printf("%d %d\n",now.x,now.y);
|
|
}
|
|
if(e[j].x!=0)
|
|
{
|
|
printf("%d %d ",now.x,now.y);
|
|
now.x+=e[j].x;
|
|
printf("%d %d\n",now.x,now.y);
|
|
}
|
|
if(!been&&e[j].y!=0)
|
|
{
|
|
printf("%d %d ",now.x,now.y);
|
|
now.y+=e[j].y;
|
|
printf("%d %d\n",now.x,now.y);
|
|
}
|
|
return 0;
|
|
}
|