记录编号 360231 评测结果 AATTTTTTTT
题目名称 2575.[USACO Dec16]进击的三角形 最终得分 20
用户昵称 FoolMike 是否通过 未通过
代码语言 C++ 运行时间 8.265 s
提交时间 2016-12-27 21:57:15 内存使用 1.76 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
typedef long long ll;
const int N=310;
struct pt{
	ll x,y;
	pt(int X=0,int Y=0){x=X;y=Y;}
	pt operator + (const pt a)const{return pt(x+a.x,y+a.y);}
	pt operator - (const pt a)const{return pt(x-a.x,y-a.y);}
	ll operator * (const pt a)const{return x*a.x+y*a.y;}
}p[N],f[N][N];
bool cmp(const pt &x,const pt &y){return x.x<y.x;}
int n,ans[N];
inline ll abs(ll x){return x>0?x:-x;}
inline ll S(pt x,pt y){return abs(x.x*y.y-x.y*y.x);}
bool check(pt x,pt y,pt z,pt v,ll s){
	return abs(S(x,y)+S(y,z)+S(z,x))==s;
}
int main()
{
	freopen("triangles.in","r",stdin);
	freopen("triangles.out","w",stdout);
	scanf("%d",&n);
	for (int i=1;i<=n;++i) scanf("%lld%lld",&p[i].x,&p[i].y);
	std::sort(p+1,p+n+1,cmp);
	for (int i=1;i<=n;++i)
	for (int j=1;j<=n;++j)
		f[i][j]=p[i]-p[j];
	for (register int i=1;i<=n;++i)
	for (register int j=i+1;j<=n;++j)
	for (register int k=j+1;k<=n;++k){
		ll s=S(f[k][i],f[j][i]);
		register int cnt=0;
		for (register int l=i+1;l<k;++l)
		if (j!=l)
			cnt+=(S(f[i][l],f[j][l])+S(f[j][l],f[k][l])+S(f[k][l],f[i][l])==s);
		++ans[cnt];
	}
	for (int i=0;i<=n-3;i++) printf("%d\n",ans[i]);
	return 0;
}