Cod sursa(job #116178)

Utilizator hazegirlCatalina Predoi hazegirl Data 17 decembrie 2007 22:01:50
Problema Rays Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
//rays
#include<fstream.h>
int main()
{long int n,i,j,nrn=0,nrp=0,t,gas;
long double an[150001],ap[150001],an2[150001],ap2[150001],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;
}