Pagini recente » Cod sursa (job #3137450) | Cod sursa (job #1495887) | Cod sursa (job #1401279) | Cod sursa (job #1467037) | Cod sursa (job #2406279)
#include <bits/stdc++.h>
using namespace std;
struct s { double p; bool t; };
const double pi = 2.0 * acos(0.0), e = 1e-14;
bool cmp(s a, s b) { if(fabs(a.p - b.p) < e) return a.t > b.t; return a.p - b.p < -e; };
vector<s> v;
int main()
{
freopen("rays.in", "r", stdin);
freopen("rays.out", "w", stdout);
int x, y1, y2, n, cnt = 0, ans = 0, t = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d%d%d", &x, &y1, &y2);
if(y1 > y2) swap(y1, y2);
v.push_back({atan2(y1, x) - pi / 2, 1});
if(v.back().p <= e) v.back().p += 2 * pi;
if(v.back().p - pi <= e) v.back().t = 0;
v.push_back({atan2(y2, x) - pi / 2, 0});
if(v.back().p <= e) v.back().p += 2 * pi;
if(v.back().p - pi <= e) v.back().t = 1;
}
sort(v.begin(), v.end(), cmp);
for(int i = 0; i < v.size(); i++)
{
if(v[i].t) cnt++, t = 0;
else cnt--, ans += !t, t = 1;
}
printf("%d", ans);
return 0;
}