Oto on:
#include<cstdio>
int s(int n)
{
if(n>0)return 1;
if(n==0)return 0;
return -1;
}
int det(int a, int b, int c, int d, int e, int f)
{
return a*d+b*e+c*f-e*d-f*a-c*b;
}
int main()
{
long long int t;
long double z = 1;
scanf("%lld", &t);
while(t--)
{
int n = 1;
int x1, x2, x3, x4, y1, y2, y3, y4;
scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
int d1 = (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
int d2 = (x4-x3)*(x4-x3)+(y4-y3)*(y4-y3);
//Czy pusty
if((x3 == x4 && y3 == y4)||(x1 == x2 && y1 == y2))
{
printf("-\n");
continue;
}
//Czy styka
if(x1 == x3 && y1 == y3)
{
int d3 = (x2-x4)*(x2-x4)+(y2-y4)*(y2-y4);
if(d1+d2 == d3)n = 50;
if(d1+d2 > d3)n = 5;
}
else if(x1 == x4 && y1 == y4)
{
int d3 = (x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);
if(d1+d2 == d3)n = 50;
if(d1+d2 > d3)n = 5;
}
else if(x2 == x3 && y2 == y3)
{
int d3 = (x1-x4)*(x1-x4)+(y1-y4)*(y1-y4);
if(d1+d2 == d3)n = 50;
if(d1+d2 > d3)n = 5;
}
else if(x2 == x4 && y2 == y4)
{
int d3 = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);
if(d1+d2 == d3)n = 50;
if(d1+d2 > d3)n = 5;
}
//Czy X
else if(s(det(x1,y1,x2,y2,x3,y3))!=s(det(x1,y1,x2,y2,x4,y4))&&s(det(x3,y3,x4,y4,x1,y1))!=s(det(x3,y3,x4,y4,x2,y2)))
{
if(det(x1,y1,x2,y2,x3,y3)==0||det(x1,y1,x2,y2,x4,y4)==0||det(x3,y3,x4,y4,x1,y1)==0||det(x3,y3,x4,y4,x2,y2)==0)n = 1;
else n = 10;
}
if(det(x1,y1,x2,y2,x3,y3)==0 && det(x1,y1,x2,y2,x4,y4)==0) n = 1;
z *= n;
if(n == 50)printf("L\n");
else if(n == 10)printf("X\n");
else if(n == 5)printf("V\n");
else printf("-\n");
}
printf("%.llf",z);
return 0;
}
Jednak %Le w printf był źle, sprawdziłem na ideone i dałem %Lf ale nadal WA