记录编号 433739 评测结果 AAAAAAAAAA
题目名称 膜拜神犇 最终得分 100
用户昵称 Gravatar하루Kiev 是否通过 通过
代码语言 C++ 运行时间 0.422 s
提交时间 2017-08-06 06:35:16 内存使用 0.31 MiB
显示代码纯文本
#include <cstdio>
#include <iostream>
#define eps 1e-6
using namespace std; 
int cnt,n;
double x1,x2,x3,yi,y2,y3;
struct Point{double x,y;}; 
double cross(const Point &a,const Point &b,const Point &p){	
    return(b.x-a.x)*(p.y-a.y)-(b.y-a.y)*(p.x-a.x);
} 
bool toLeft(const Point &a,const Point &b,const Point &p){	
     return cross(a,b,p)>eps;
} 
bool inTriangle(const Point &p, const Point &a, const Point &b, const Point &c){	
     bool res=toLeft(a,b,p);	
	 if(res!=toLeft(b,c,p)) return false;	
	 if(res!=toLeft(c,a,p)) return false;	
	 if(cross(a,b,c) == 0) return false;	
	 return true;
} 
bool check(){
	 double k1=(yi-y2)/(x1-x2);
	 double b1=yi-k1*x1;
	 if(b1==0) return false;
	 k1=(y2-y3)/(x2-x3);
	 b1=y2-k1*x2;
	 if(b1==0) return false;
	 k1=(yi-y3)/(x1-x3);
	 b1=yi-k1*x1;
	 if(b1==0) return false;
	 return true;
}
int main(){	
    freopen("trioxorz.in","r",stdin);
    freopen("trioxorz.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
    	scanf("%lf%lf%lf%lf%lf%lf",&x1,&yi,&x2,&y2,&x3,&y3);
	    Point A; A.x=x1; A.y=yi;	
		Point B; B.x=x2; B.y=y2;	
	    Point C; C.x=x3; C.y=y3;	
		Point P; P.x=0.0; P.y=0.0;	
		if(!check()) continue;
	    if(inTriangle(P,A,B,C))	cnt++;	
	}
	printf("%d",cnt);	
	return 0;
}