记录编号 204683 评测结果 AAAAAAAAAA
题目名称 [SYOI 2015] Asm.Def找燃料 最终得分 100
用户昵称 Gravatarmomo123 是否通过 通过
代码语言 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;
}