Pagini recente » Cod sursa (job #2541768) | Cod sursa (job #2108975) | Monitorul de evaluare | Cod sursa (job #679930) | Cod sursa (job #752774)
Cod sursa(job #752774)
#include <cstdio>
#include <algorithm>
#include <math.h>
#define eps 1.e-14
#define pi 3.14
using namespace std;
struct Segment {
double x,y1,y2;
};
struct Segment2 {
double masura;
long tip;
};
Segment a[200001];
Segment2 s1[200001];
Segment2 s2[200001];
double unghi (double x , double y) {
double tg,beta,sin,cos,d;
tg=y/x;
beta=tg;
return beta;
}
bool cmp (Segment2 A , Segment2 B) {
return (A.masura-B.masura)<=-eps;
}
int main () {
long n,i,c=0,u=0,o=0,num=0;
double aux;
double f1,f2,f3;
freopen ("rays.in","r",stdin);
freopen ("rays.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++) {
scanf("%lf%lf%lf",&f1,&f2,&f3);
a[i].x=f1;
a[i].y1=f2;
a[i].y2=f3;
if (a[i].y1-a[i].y2>eps) {
aux=a[i].y1;
a[i].y1=a[i].y2;
a[i].y2=aux;
}
if (a[i].x>eps) {
s1[++u].masura=unghi(a[i].x,a[i].y1);
s1[u].tip=1;
s1[++u].masura=unghi(a[i].x,a[i].y2);
s1[u].tip=-1;
}
else {
s2[++o].masura=unghi(a[i].x,a[i].y1);
s2[o].tip=1;
s2[++o].masura=unghi(a[i].x,a[i].y2);
s2[o].tip=-1;
}
}
sort (s1+1,s1+1+u,cmp);
sort (s2+1,s2+1+o,cmp);
for (i=1;i<=u;i++) {
c+=s1[i].tip;
if (c==0)
num++;
}
c=0;
for (i=1;i<=o;i++) {
c+=s2[i].tip;
if (c==0)
num++;
}
printf("%ld\n",num);
return 0;
}