Hi I'm getting WA.
Code: Select all
#include <math.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
double lado(int x1, int y1, int x2, int y2){
return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
}
double angle(int x1,int y1,int x2,int y2,int x3,int y3){
int a = x2 - x1;
int b = y2 - y1;
int c = x3 - x2;
int d = y3 - y2;
double numerador = (a*c + b*d);
double value = 0;
if(numerador != 0.0)
value = numerador/sqrt((a*a+b*b)*(c*c+d*d));
return acos(value)*180/M_PI;
}
double pendiente(int x1, int y1, int x2, int y2){
return ((y2-y1)*1.0)/(x2-x1);
}
int main()
{
freopen("in.txt","rt",stdin);
freopen("out.txt","wt",stdout);
int valores[4][2];
double angles[4];
double lados[4];
double pendientes[4];
int t;
scanf("%d\n",&t);
for(int k=1;k<=t;k++){
int indices[4]={0,1,2,3};
for(int i=0;i<4;i++)
scanf("%d %d\n",&valores[i][0],&valores[i][1]);
int m =0;
do{
//double sum = 0;
angles[0] = angle(valores[indices[0]][0],valores[indices[0]][1],valores[indices[1]][0],valores[indices[1]][1],valores[indices[2]][0],valores[indices[2]][1]);
angles[1] = angle(valores[indices[1]][0],valores[indices[1]][1],valores[indices[2]][0],valores[indices[2]][1],valores[indices[3]][0],valores[indices[3]][1]);
angles[2] = angle(valores[indices[2]][0],valores[indices[2]][1],valores[indices[3]][0],valores[indices[3]][1],valores[indices[0]][0],valores[indices[0]][1]);
angles[3] = angle(valores[indices[3]][0],valores[indices[3]][1],valores[indices[0]][0],valores[indices[0]][1],valores[indices[1]][0],valores[indices[1]][1]);
if(angles[0]+angles[1]+angles[2]+angles[3]==360.0)
break;
}while(next_permutation(indices,indices+4));
lados[0] = lado(valores[indices[0]][0],valores[indices[0]][1],valores[indices[1]][0],valores[indices[1]][1]);
lados[1] = lado(valores[indices[1]][0],valores[indices[1]][1],valores[indices[2]][0],valores[indices[2]][1]);
lados[2] = lado(valores[indices[2]][0],valores[indices[2]][1],valores[indices[3]][0],valores[indices[3]][1]);
lados[3] = lado(valores[indices[3]][0],valores[indices[3]][1],valores[indices[0]][0],valores[indices[0]][1]);
printf("Case %d: ",k);
if(lados[0]==lados[1] && lados[1]==lados[2] && lados[2]==lados[3]){
if(angles[0]==angles[1] && angles[1]==angles[2] && angles[2]==angles[3] && angles[3]==90.0)
printf("Square\n");
else
printf("Rhombus\n");
}else{
if(lados[0]==lados[2] && lados[1]==lados[3]){
if(angles[0]==angles[1] && angles[1]==angles[2] && angles[2]==angles[3] && angles[3]==90.0)
printf("Rectangle\n");
else
printf("Parallelogram\n");
}else{
pendientes[0] = pendiente(valores[indices[0]][0],valores[indices[0]][1],valores[indices[1]][0],valores[indices[1]][1]);
pendientes[1] = pendiente(valores[indices[1]][0],valores[indices[1]][1],valores[indices[2]][0],valores[indices[2]][1]);
pendientes[2] = pendiente(valores[indices[2]][0],valores[indices[2]][1],valores[indices[3]][0],valores[indices[3]][1]);
pendientes[3] = pendiente(valores[indices[3]][0],valores[indices[3]][1],valores[indices[0]][0],valores[indices[0]][1]);
if((pendientes[0]==pendientes[2] && pendientes[1]!=pendientes[3])||(pendientes[0]!=pendientes[2] && pendientes[1]==pendientes[3]))
printf("Trapezium\n");
else
printf("Ordinary Quadrilateral\n");
}
}
}
return 0;
}
//---------------------------------------------------------------------------