见样例
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
}a[4],b;
inline int read() {
int f = 1, x = 0;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') {
f = -1;
}
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = (x << 3) + (x << 1) + (ch ^ 48);
ch = getchar();
}
return ~f ? x : -x;
}
inline void write(int x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9) {
write(x / 10);
putchar(x % 10 + '0');
}
else
putchar(x + '0');
return;
}
double dis(node a,node b){
return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
}
double S(node a,node b,node c){
double ab=dis(a,b),bc=dis(b,c),ac=dis(a,c);
double p=(ab+bc+ac)/2;
return sqrt(p*(p-ab)*(p-bc)*(p-ac));
}
int main(){
// ios::sync_with_stdio(false);
a[1].x=read(),a[1].y=read();
a[2].x=read(),a[2].y=read();
a[3].x=read(),a[3].y=read();
b.x=read(),b.y=read();
double s=S(a[1],a[2],a[3]),s1=S(a[1],a[2],b),s2=S(a[1],a[3],b),s3=S(a[2],a[3],b);
// cout<<s<<' '<<s1<<' '<<s2<<' '<<s3;
if(!s1||!s2||!s3){
if(s1==s||s2==s||s3==s){
putchar('4');
}
else{
putchar('3');
}
}
else{
// cout<<s1+s2+s3;
if(s1+s2+s3>s){
cout<<s<<' '<<s1<<' '<<s2<<' '<<s3<<'\n';
putchar('2');
}
else{
putchar('1');
}
}
// cin.tie(0);
return 0;
}