比赛 Asm_Def战记之透明计算网络 评测结果 WWWWWWWWWW
题目名称 Asm_Def的模拟赛 最终得分 0
用户昵称 Collor 运行时间 5.005 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-11-01 11:58:54
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<ctime>
using namespace std;
struct node
{
	int x,y;
}a[500];
bool mycmp(node x1,node x2)
{
	return (abs(x1.x)+abs(x1.y)>abs(x2.y)+abs(x2.x));
}
inline double Abs(double xx)
{
	if (xx<0) return -xx;
	return xx;
}
bool f[500],vis[500];
int n,ans=0,sum=0;
void init()
{
	memset(f,0,sizeof(f));
	memset(vis,0,sizeof(vis));
	cin>>n;
	//int xx,yy;
	for (int i=1;i<=n;i++)
		scanf("%d%d",&a[i].x,&a[i].y);
	//sort(a+1,a+1+n,mycmp);
}
void work()
{
	int mas=0;
	double k1,k2,k3,b1,b2,b3;
	double f1,f2,f3;
	for (int i=1;i<=n;i++){
		for (int j=i+1;j<=n;j++) {
			k1=((a[i].y-a[j].y)*1.000)/((a[i].x-a[j].x)*1.000);
			b1=a[i].y-a[i].x*k1;
			for (int k=j+1;k<=n;k++) {
				f1=k1*a[k].x+b1-a[k].y;
				
				
				k2=((a[i].y-a[k].y)*1.000)/((a[i].x-a[k].x)*1.000);
				b2=a[i].y-a[i].x*k2;
				
				f2=k2*a[j].x+b2-a[j].y;
				
				k3=((a[j].y-a[k].y)*1.000)/((a[j].x-a[k].x)*1.000);
				b3=a[j].y-a[j].x*k3;
				
				f3=k3*a[i].x+b1-a[i].y;
				f[i]=f[j]=f[k]=1;
				mas=0;
				for (int l=1;l<=n;l++) 
					if (!f[l]){
					double xx=k1*a[k].x+b1-a[k].y;
					if ((xx>0 && f1>0)||(xx<0 && (f1<0)||(Abs(xx)<0.001))) {
						xx=k2*a[k].x+b2-a[k].y;
						if ((xx>0 && (f2>0))||(xx<0 && (f2<0)||(Abs(xx)<0.001))){
							xx=k3*a[k].x+b3-a[k].y;
							if ((xx>0 && (f3>0))||(xx<0 && (f3<0)||(Abs(xx)<0.001))){
								mas++;
								//printf("%d  %d  %d\n%d\n",i,j,k,l);
							}
						}
					}
				}
				if (mas>ans)ans=mas,sum=1;
				else if (mas==ans)sum++;
				//if (mapp[i][j]==)
			}
		}
		
	}
}
int main()
{
	freopen("trib.in","r",stdin);
	freopen("trib.out","w",stdout);
	init();
	work();
	printf("%d\n%d\n",ans+2,sum);
	return 0;
}