记录编号 |
433739 |
评测结果 |
AAAAAAAAAA |
题目名称 |
膜拜神犇 |
最终得分 |
100 |
用户昵称 |
하루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;
}