比赛 |
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;
}