Pagini recente » Cod sursa (job #2468115) | Cod sursa (job #2148681) | Cod sursa (job #1486325) | Cod sursa (job #23841) | Cod sursa (job #1754336)
#include <bits/stdc++.h>
using namespace std;
ifstream in ( "rays.in" );
ofstream out( "rays.out" );
vector< tuple<int, int, int> > l1, l2;
bool comp( tuple<int, int, int> a, tuple<int, int, int> b ) {
return get<0>(a) * 1LL * get<1>(b) > get<0>(b) * 1LL * get<1>(a);
}
int solve( vector< tuple<int, int, int> > &l ) {
int ans = 1; tuple<int, int> p;
if( l.size() == 0 )
return 0;
sort( l.begin(), l.end(), comp );
p = make_tuple( get<0>(l[0]), get<2>(l[0]) );
for( int i = 1; i < l.size(); i ++ ) {
if( get<0>(p) * 1LL * get<1>(l[i]) > get<1>(p) * 1LL * get<0>(l[i]) ) {
ans ++;
p = make_tuple( get<0>(l[i]), get<2>(l[i]) );
}
}
return ans;
}
int main( void ) {
int n; in >> n;
for( int i = 1; i <= n; i ++ ) {
int x, y1, y2; in >> x >> y1 >> y2;
if( y1 > y2 )
swap( y1, y2 );
if( x < 0 )
l1.push_back( make_tuple( -x, y1, y2 ) );
else
l2.push_back( make_tuple( +x, y1, y2 ) );
}
out << solve( l1 ) + solve( l2 ) << endl;
return 0;
}