Pagini recente » Cod sursa (job #2401547) | Cod sursa (job #753680) | Cod sursa (job #3005477) | Cod sursa (job #834036) | Cod sursa (job #1152536)
#include<fstream>
#include<algorithm>
#define NMAX 200010
using namespace std;
ifstream f("rays.in");
ofstream g("rays.out");
struct dreapta
{
long long x, y1, y2;
}a[NMAX], b[NMAX];
int na, nb, n, sol=0;
void Citeste()
{
int i;
dreapta D;
f>>n;
for (i=1; i<=n; ++i)
{
f>>D.x>>D.y1>>D.y2;
if (D.y1>D.y2) swap(D.y1, D.y2);
if (D.x>0) a[++na]=D;
else
{
D.x*=-1;
b[++nb]=D;
}
}
}
bool cmp(dreapta A, dreapta B)
{
return A.y2*B.x<A.x*B.y2;
}
void Solve(dreapta a[], int n)
{
int i;
dreapta P;
sort(a+1, a+n+1, cmp);
if (n>0)
{
P=a[1]; ++sol;
for (i=2; i<=n; ++i)
if (P.y2*a[i].x<P.x*a[i].y1)
{
P=a[i]; ++sol;
}
}
}
void Scrie()
{
g<<sol<<"\n";
}
int main()
{
Citeste();
Solve(a, na);
Solve(b, nb);
Scrie();
f.close();
g.close();
return 0;
}