标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 286 Accepted Submission(s): 185
#include<bits/stdc++.h> using namespace std; int t; int n; struct node { double x; double y; }N[105]; double dis(int x1,int y1,int x2,int y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } bool cmp(struct node a,struct node b) { if(a.x>b.x) return true; if(a.x==b.x) { if(a.y>b.y) return true; } return false; } int main() { scanf("%d",&t); for(int i=1;i<=t;i++) { memset(N,0,sizeof(N)); scanf("%d",&n); for(int j=0;j<n;j++) scanf("%lf%lf",&N[j].x,&N[j].y); if(n!=4) printf("NO\n"); else { sort(N,N+4,cmp); int dis1,dis2,dis3,dis4,ss1,ss2,ss3; dis1=dis(N[0].x,N[0].y,N[1].x,N[1].y); dis2=dis(N[2].x,N[2].y,N[3].x,N[3].y); dis3=dis(N[0].x,N[0].y,N[2].x,N[2].y); dis4=dis(N[1].x,N[1].y,N[3].x,N[3].y); ss1=(N[0].x-N[1].x)*(N[0].x-N[1].x)+(N[0].y-N[1].y)*(N[0].y-N[1].y); ss2=(N[0].x-N[2].x)*(N[0].x-N[2].x)+(N[0].y-N[2].y)*(N[0].y-N[2].y); ss3=(N[1].x-N[2].x)*(N[1].x-N[2].x)+(N[1].y-N[2].y)*(N[1].y-N[2].y); if(dis1==dis2&&dis2==dis3&&dis3==dis4&&((ss1+ss2)==ss3)) printf("YES\n"); else printf("NO\n"); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/hsd-/p/4951205.html