Pagini recente » Cod sursa (job #253960) | Cod sursa (job #684701) | Cod sursa (job #2381939) | Cod sursa (job #1818699) | Cod sursa (job #474211)
Cod sursa(job #474211)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct line
{
int x, y1, y2;
} v[200002];
struct segm
{
double st, dr;
} p[200002];
int n, nr, sol;
inline int cmp (segm a, segm b)
{
return a.dr < b.dr;
}
void rez ()
{
int i;
double dr = -2000000000;
for (i = 1; i <= nr; i ++)
if (dr < p[i].st)
{
dr = p[i].dr;
sol ++;
}
}
int main ()
{
freopen ("rays.in", "r", stdin);
freopen ("rays.out", "w", stdout);
scanf ("%d", &n);
int i;
for (i = 1; i <= n; i ++)
{
scanf ("%d %d %d", &v[i].x, &v[i].y1, &v[i].y2);
if (v[i].x > 0)
{
p[++nr].st = (double) min (v[i].y1, v[i].y2) / v[i].x;
p[nr].dr = (double) max (v[i].y1, v[i].y2) / v[i].x;
}
}
sort (p + 1, p + nr + 1, cmp);
rez ();
nr = 0;
for (i = 1; i <= n; i ++)
if (v[i].x < 0)
{
p[++nr].st = (double) -1 * min (v[i].y1, v[i].y2) / v[i].x;
p[nr].dr = (double) -1 * max (v[i].y1, v[i].y2) / v[i].x;
}
sort (p + 1, p + nr + 1, cmp);
rez ();
printf ("%d\n", sol);
return 0;
}