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