Pagini recente » Cod sursa (job #843114) | Cod sursa (job #2036109) | Cod sursa (job #1464111) | Cod sursa (job #29446) | Cod sursa (job #120502)
Cod sursa(job #120502)
#include<stdio.h>
#include<math.h>
struct Int{
double st,en;
short handle;
};
struct seg{
long x,y1,y2;
};
double sw(double &a,double &b){
double aux;
aux=a;
a=b;
b=aux;
}
Int sw(Int &a, Int &b){
Int aux;
aux=a;
a=b;
b=aux;
}
int main()
{
Int ln[100];
seg rd;
int i,j,n,ct=0,flag;
freopen("rays.in","rt",stdin);
freopen("rays.out","w+",stdout);
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d%d%d",&rd.x,&rd.y1,&rd.y2);
ln[i].st=atan(rd.y1/(double)rd.x);
ln[i].en=atan(rd.y2/(double)rd.x);
ln[i].handle=0;
if(ln[i].st>ln[i].en)
sw(ln[i].st,ln[i].en);
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(ln[i].st>ln[j].st)
sw(ln[i],ln[j]);
Int now;
i=0;
do{
ct++;
for(ln[i].handle=1,now=ln[i++];i<n;i++){
if(ln[i].handle)
continue;
flag=0;
if(now.st<ln[i].st)
now.st=ln[i].st;
if(now.en>ln[i].en)
now.en=ln[i].en;
if(now.en>now.st)
ln[i].handle=1;
else break;
}
flag=0;
for(j=0;j<n;j++)
if(!ln[j].handle){
i=j;
flag=1;
break;
}
}while(flag);
printf("%d",ct);
fclose(stdin);
fclose(stdout);
return 0;
}