firstfire
July 30th, 2004, 05:24 AM
http://acm.zju.edu.cn/show_problem.php?pid=1580
My program always TLE.
#include <iostream.h>
#define N 1000
struct Point
{double x,y;
}p[N];
int RightAngledCount(int i, int j, int k)
{
int ReturnValue=0;
ReturnValue=((p[i].x-p[j].x)*(p[k].x-p[j].x)+(p[i].y-p[j].y)*(p[k].y-p[j].y));
ReturnValue*=((p[j].x-p[i].x)*(p[k].x-p[i].x)+(p[j].y-p[i].y)*(p[k].y-p[i].y));
ReturnValue*=((p[j].x-p[k].x)*(p[i].x-p[k].x)+(p[j].y-p[k].y)*(p[i].y-p[k].y));
return !ReturnValue;
}
int main()
{
int n,i,j,k,count;
while(cin>>n)
{
for(i=0,count=0;i<n;i++)
cin>>p[i].x>>p[i].y;
for(j=0;j<n;j++)
for(i=j+1;i<n;i++)
for(k=i+1;k<n;k++)
count+=RightAngledCount(i,j,k);//for
cout<<count<<endl;
}//while
return 1;
}
My program always TLE.
#include <iostream.h>
#define N 1000
struct Point
{double x,y;
}p[N];
int RightAngledCount(int i, int j, int k)
{
int ReturnValue=0;
ReturnValue=((p[i].x-p[j].x)*(p[k].x-p[j].x)+(p[i].y-p[j].y)*(p[k].y-p[j].y));
ReturnValue*=((p[j].x-p[i].x)*(p[k].x-p[i].x)+(p[j].y-p[i].y)*(p[k].y-p[i].y));
ReturnValue*=((p[j].x-p[k].x)*(p[i].x-p[k].x)+(p[j].y-p[k].y)*(p[i].y-p[k].y));
return !ReturnValue;
}
int main()
{
int n,i,j,k,count;
while(cin>>n)
{
for(i=0,count=0;i<n;i++)
cin>>p[i].x>>p[i].y;
for(j=0;j<n;j++)
for(i=j+1;i<n;i++)
for(k=i+1;k<n;k++)
count+=RightAngledCount(i,j,k);//for
cout<<count<<endl;
}//while
return 1;
}