http://acm.timus.ru/problem.aspx?space=1&num=1052
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; struct node
{
double x,y;
}p[]; double cross(node a,node b,node c)
{
return ((c.x-a.x)*(b.y-a.y)-(c.y-a.y)*(b.x-a.x));
}
int main()
{
int n;
scanf("%d",&n);
for(int i=; i<n; i++)
{
scanf("%lf%lf",&p[i].x,&p[i].y);
}
int max1=-;
for(int i=; i<n; i++)
{
for(int j=i+; j<n; j++)
{
int ans=;
for(int k=; k<n; k++)
{
if(i!=k&&j!=k&&cross(p[i],p[j],p[k])==) ans++;
}
max1=max(max1,ans);
}
}
printf("%d\n",max1);
return ;
}