Pagini recente » Cod sursa (job #1763823) | Cod sursa (job #800994) | Cod sursa (job #1841109) | Cod sursa (job #292319) | Cod sursa (job #2541589)
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
#define ld double
using namespace std;
ifstream cin ("rays.in");
ofstream cout ("rays.out");
int n, x, y, z;
ld angle1, angle2;
vector <pair <ld, ld>> poz, neg;
int solve(vector <pair <ld, ld>> v) {
int ans = 0;
ld mn = v[0].first - 1;
sort(v.begin(), v.end());
for(auto &i : v) {
if(i.first > mn) {
ans++;
mn = i.second;
} else
mn = min(mn, i.second);
}
return ans;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> x >> y >> z;
int x2 = (x > 0 ? x : -x);
angle1 = atan2(y, x2);
angle2 = atan2(z, x2);
if(angle2 < angle1)
swap(angle1, angle2);
if(x > 0)
poz.push_back({angle1, angle2});
else
neg.push_back({angle1, angle2});
}
cout << solve(poz) + solve(neg);
return 0;
}