简化一下吧,就是,给你一个屏幕(二维坐标系),屏幕上有很点,必杀技的那个矩形的四个顶点必须是以屏幕上的水果为顶点,现在要你算一下,
对于这个屏幕,你能放多少种不同的必杀,也就是有多少个不同的矩形(只要任意一点的坐标不同均视为不同矩形)。
输入格式
有多组数据,第一行为一个数T(T<=10),表示有多少组数据。
接着,对于每一组数据,有一个数N(1<=N<=1000),表示平面上有多少个点。
接下来有N行,每行两个数x,y(abs(x,y)<=1e4),表示每一个点的坐标。
输入全部为整数。
输出格式
对于每一组数据,只输出一个数k(k<10^9),占一行,表示这些点能构成多少个不同的矩形。
输入样例
1
6
0 0
0 1
0 2
1 0
1 1
1 2
输出样例
3
来源
胖子
作者
scau_acm
# include<stdio.h>
# include<math.h>
#include<malloc.h>
int main()
{ int n,m;
int* x,*y;
int count=0;
do{
scanf("%d",&n);
}while(n>10||n<0);
for(int p=0;p<n;p++){
do{
scanf("%d",&m);
}while(m<1||m>1000);
x=(int*)malloc(m);
y=(int*)malloc(m);
for(int i=0;i<m;i++)
{
scanf("%d",&x[i]);
scanf("%d",&y[i]);
}
for(int i=0;i<m-3;i++)
{
for(int j=i+1;j<m;j++)
{
if(x[i]==x[j])
{
for(int k=i+1;k<m;k++)
{
if(y[i]==y[k])
{
for(int r=i+1;r<m;r++)
{
if(x[r]==x[k]&&y[r]==y[j])
count++;
}
}
}
}
}
}
printf("%d\n",count);
}
return 0;
}