Pagini recente » Cod sursa (job #112952) | Cod sursa (job #1608315) | Cod sursa (job #2840825) | Cod sursa (job #2821919) | Cod sursa (job #116170)
Cod sursa(job #116170)
//rays
#include<fstream.h>
int main()
{long int n,i,j,nrn=0,nrp=0,t,gas;
long float an[200001],ap[200001],an2[200001],ap2[200001],x, y1,y2;
ifstream f("rays.in");
ofstream g("rays.out");
f>>n;
for(i=1;i<=n;i++)
{f>>x>>y1>>y2;
if(x>0) if(y1<y2) {ap[++nrp]=y1/x; ap2[nrp]=y2/x;}
else {ap[++nrp]=y2/x; ap2[nrp]=y1/x;}
else if(y2<y1) {an[++nrn]=y1/x; an2[nrn]=y2/x;}
else {an[++nrn]=y2/x; an2[nrn]=y1/x;}
}
t=n;//t=nrn+nrp;
for(i=1;i<nrp;i++)
{gas=0;
for(j=i+1;j<=nrp&&gas==0;j++)
{if(ap[i]>ap[j] && ap[i]<ap2[j])
if(ap2[i]>ap2[j])
{t--;
gas=1;
ap[j]=ap[i];
}
else {t--;
gas=1;
ap[j]=ap[i];
ap2[j]=ap2[i];
}
else if(ap2[i]>ap[j] &&ap2[i]<ap2[j])
if(ap[i]<ap[j])
{t--;
gas=1;
ap2[j]=ap2[i];
}
}
}
for(i=1;i<nrn;i++)
{gas=0;
for(j=i+1;j<=nrn&&gas==0;j++)
{if(an[i]>an[j] && an[i]<an2[j])
if(an2[i]>an2[j])
{t--;
gas=1;
an[j]=an[i];
}
else {t--;
gas=1;
an[j]=an[i];
an2[j]=an2[i];
}
else if(an2[i]>an[j] &&an2[i]<an2[j])
if(an[i]<an[j])
{t--;
gas=1;
an2[j]=an2[i];
}
}
}
g<<t<<'\n';
f.close();
g.close();
return 0;
}