记录编号 |
204683 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[SYOI 2015] Asm.Def找燃料 |
最终得分 |
100 |
用户昵称 |
momo123 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.020 s |
提交时间 |
2015-11-04 15:57:08 |
内存使用 |
16.49 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
int x[105],y[105],m,n,ans,maxx;
struct xp
{
int sum;
int a[105];
}xx[20005];
struct yp
{
int summ;
int b[105];
}yy[20005];
bool v[105];
bool pd(int x1,int y1,int x2,int y2,int x3,int y3)
{
double xx1=x2-x1,xx2=x3-x2;
double yy1=y2-y1,yy2=y3-y2;
if((xx1==0&&yy1==0&&(xx2!=0||yy2!=0))||((xx2==0&&yy2==0)&&(xx1!=0||yy1!=0)))
if((xx1==0&&xx2==0)||(yy1==0&&yy2==0))
return true;
if(abs(xx1/xx2-yy1/yy2)<1e-9)
return true;
else return false;
}
int main()
{
freopen("asm_fuel.in","r",stdin);
freopen("asm_fuel.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
int ii,jj;
cin>>ii>>jj;
x[i]=ii+10000;
y[i]=jj+10000;
xx[x[i]].sum++;
xx[x[i]].a[xx[x[i]].sum]=i;
yy[y[i]].summ++;
yy[y[i]].b[yy[y[i]].summ]=i;
}
for(int i=1;i<=n;i++)
{
for(int p=1;p<=xx[x[i]].sum;p++)
for(int p1=1;p1<=yy[y[i]].summ;p1++)
if(xx[x[i]].a[p]==yy[y[i]].b[p1])
{
ans++;
v[xx[x[i]].a[p]]=1;
}
for(int j=i+1;j<=n&&v[j]==0;j++)
{
for(int q=1;q<=xx[x[j]].sum;q++)
for(int q1=1;q1<=yy[y[j]].summ;q1++)
if(xx[x[j]].a[q]==yy[y[j]].b[q1])
{
ans++;
v[xx[x[j]].a[q]]=1;
}
for(int k=1;k<=n&&v[k]==0;k++)
if(pd(x[i],y[i],x[j],y[j],x[k],y[k]))
{
for(int qq=1;qq<=xx[x[k]].sum;qq++)
for(int qq1=1;qq1<=yy[y[k]].summ;qq1++)
if(xx[x[k]].a[qq]==yy[y[k]].b[qq1])
{
ans++;
v[xx[x[k]].a[qq]]=1;
}
}
maxx=max(ans,maxx);
ans=0;
memset(v,0,sizeof(v));
for(int p=1;p<=xx[x[i]].sum;p++)
for(int p1=1;p1<=yy[y[i]].summ;p1++)
if(xx[x[i]].a[p]==yy[y[i]].b[p1])
{
ans++;
v[xx[x[i]].a[p]]=1;
}
}
ans=0;
memset(v,0,sizeof(v));
}
cout<<maxx;
return 0;
}