比赛 NOIP2008集训模拟5 评测结果 AAAAAAAAAA
题目名称 数星星 最终得分 100
用户昵称 BYVoid 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2008-11-14 10:28:46
显示代码纯文本
#include <iostream>

using namespace std;

const int MAXN=1001;

struct Stars
{
	int x,y;
};

int N,Ans;
Stars S[MAXN];
int F[MAXN][MAXN];

void init()
{
	int i;
	freopen("stars.in","r",stdin);
	freopen("stars.out","w",stdout);
	scanf("%d",&N);
	for (i=1;i<=N;i++)
	{
		scanf("%d%d",&S[i].x,&S[i].y);
	}
}

bool inline inl(int i,int j,int k)
{
	return (S[i].x-S[k].x)*(S[i].y-S[j].y)==(S[i].x-S[j].x)*(S[i].y-S[k].y);
}

void dynamic()
{
	int i,j,k;
	for (i=1;i<=N;i++)
	{
		for (j=1;j<=i-1;j++)
		{
			F[i][j]=1;
			for (k=1;k<=j-1;k++)
			{
				if (inl(i,j,k) && F[j][k] + 1>F[i][j])
				{
					F[i][j]=F[j][k]+1;
				}
			}
			if (F[i][j]>Ans)
				Ans=F[i][j];
		}
	}
	Ans++;
}

int main()
{
	init();
	dynamic();
	cout << Ans;
	return 0;
}