#include #include #include #define X first #define Y second const int N = 1005; using namespace std; pair< int, int > tmp, L, A[ N ], B[ N ]; int n, dead[ N ] = { 0 }; int pronadji( void ) { int ind = -1; double nbvis = -1; for( int i = 0; i < n; ++i ) { if( dead[ i ] || L.X < A[ i ].X || L.X > B[ i ].X ) continue; double nagib = ( B[ i ].Y - A[ i ].Y ) / ( double )( B[ i ].X - A[ i ].X ); double vis = A[ i ].X + ( L.X - A[ i ].X ) * nagib; if( vis < ( double )L.Y && vis > nbvis ) { nbvis = vis; ind = i; } } dead[ ind ] = 1; return( ind ); } int main( void ) { scanf( "%d %d %d", &L.X, &L.Y, &n ); for( int i = 0; i < n; ++i ) { scanf( "%d %d %d %d", &A[ i ].X, &A[ i ].Y, &B[ i ].X, &B[ i ].Y ); if( A[ i ].X > B[ i ].X ) { tmp = A[ i ]; A[ i ] = B[ i ]; B[ i ] = tmp; } } int sudar = 0; while( 1 ) { int ind = pronadji(); if( ind == -1 ) break; ++sudar; L = ( A[ ind ].Y < B[ ind ].Y ? A[ ind ] : B[ ind ] ); } printf( "%d\n", L.X ); //printf( "(%d)\n", sudar ); return( 0 ); }