Cod sursa(job #753934)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 30 mai 2012 20:35:47
Problema Rays Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <algorithm>
# include <cstdio>
# include <cmath>
using namespace std ;

typedef pair <double, double> vector ;
const char *FIN = "rays.in", *FOU = "rays.out" ;
const int MAX = 200005 ;

# define x first
# define y second

vector A[MAX], B[MAX] ;
int N, A1, B1 ;

int solve (vector *V, int N) {
    int sol = 1 ;

    sort (V, V + N) ;
    double min = V[0].x ;
    for (int i = 1; i < N; ++i) {
        if (min < V[i].y) {
            min = V[i].x, ++sol ;
        }
    }
    return sol ;
}


int main (void) {
    freopen (FIN, "r", stdin) ;

    scanf ("%d", &N) ;
    for (int i = 1, x, y1, y2; i <= N; ++i) {
        scanf ("%d %d %d", &x, &y1, &y2) ;
        vector X (atan2 (y1, abs (x)), atan2 (y2, abs (x))) ;
        if (X.x < X.y) swap (X.x, X.y) ;
        if (x < 0) {
            A[ A1++ ] = X ;
        } else {
            B[ B1++ ] = X;
        }
    }
    fprintf (fopen (FOU, "w"), "%d\n", solve (A, A1) + solve (B, B1)) ;
}