Source Code
Problem: 1118 User: eth1
Memory: 272K Time: 297MS
Language: C++ Result: Accepted
Source Code
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
struct node
{
int a,b;
}f[705];
double ans[705];
int main()
{
int t;
while(cin>>t && t)
{
for(int i=0;i<t;i++)
{
cin>>f[i].a>>f[i].b;
}
int maxx=0;
for(int i=0;i<t;i++) // 枚举
{
int n=0;
for(int j=0;j<t;j++)
{
if(j!=i)
ans[n++]=(f[j].b-f[i].b)/((f[j].a-f[i].a)*1.0);
}
sort(ans,ans+n);
double tem=ans[0];
int ans_one=1;
for(int j=1;j<n;j++)
{
if(tem==ans[j]) // 貌似这么比较double不准 , (tem-ans[j]) < 1e-9 ...
{
ans_one++;
}
else
{
maxx = max(maxx,ans_one);
ans_one=1;
tem=ans[j];
}
}
maxx = max(maxx,ans_one);
}
cout<< maxx+1 <<endl;
}
return 0;
}