比赛 20161114 评测结果 WWWWWAATTT
题目名称 输出全靠花 最终得分 20
用户昵称 zihahahaha 运行时间 3.431 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2016-11-14 11:30:02
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
#define inf (10000)
set<pair<int,int> >a;
set<pair<int,int> >b;
set<pair<int,int> >c;
int x[1005],y[1005],z[1005],w[1005];
int n;

inline int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}
int cnt,ans;
int main()
{
	freopen("xumingshi.in","r",stdin);
	freopen("xumingshi.out","w",stdout);
	pair<int,int>a1;
	pair<int,int>b1;
	pair<int,int>c1;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d%d",x+i,y+i,z+i,w+i);
	}
	for(int i=1;i<=n;i++)
	{
		a.clear();b.clear();c.clear();
		for(int k=1;k<=n;k++)
		{
			if(k==i) continue;
			int kx_=x[k]-x[i],ky_=y[k]-y[i],kz_=z[k]-z[i],kw_=w[k]-w[i];
			if(!kx_) a1=make_pair(kx_,inf);
			if(!ky_) a1=make_pair(inf,kx_),b1=make_pair(ky_,inf);
			if(!kz_) b1=make_pair(inf,ky_),c1=make_pair(inf,kw_);
			if(!kw_) c1=make_pair(kw_,inf);
			if(kx_&&ky_&&kz_&&kw_) 
			{
				int d1_=gcd(kx_,ky_),d2_=gcd(ky_,kz_),d3_=gcd(kz_,kw_);
				a1=make_pair(kx_/d1_,ky_/d1_);
				b1=make_pair(ky_/d2_,kz_/d2_);
				c1=make_pair(kz_/d3_,kw_/d3_);
			}
			if(a.find(a1)!=a.end()&&b.find(b1)!=b.end()&&c.find(c1)!=c.end()) cnt+=2;
			else
			{
				a.insert(a1);
				b.insert(b1);
				c.insert(c1);
			}	
			for(int j=k+1;j<=n;j++)
			{
				int kx=x[j]-x[k],ky=y[j]-y[k],kz=z[j]-z[k],kw=w[j]-w[k];
				if(!kx) a1=make_pair(kx,inf);
				if(!ky) a1=make_pair(inf,kx),b1=make_pair(ky,inf);
				if(!kz) b1=make_pair(inf,ky),c1=make_pair(inf,kw);
				if(!kw) c1=make_pair(kw,inf);
				if(kx&&ky&&kz&&kw) 
				{
					int d1=gcd(kx,ky),d2=gcd(ky,kz),d3=gcd(kz,kw);
					a1=make_pair(kx/d1,ky/d1);
					b1=make_pair(ky/d2,kz/d2);
					c1=make_pair(kz/d3,kw/d3);
				}
				if(a.find(a1)!=a.end()&&b.find(b1)!=b.end()&&c.find(c1)!=c.end()) cnt++;
			}
			ans=max(ans,cnt);
			cnt=0;
		}
	}
	cout<<ans;
	return 0;
}