记录
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+100;
int n,sx,sy=0x3f3f3f3f3f3f3f3f;
struct node{
int x1,y1,x2,y2;
}L[N];
struct fenshu{
int fenzi,fenmu;
};
struct fangcheng{
fenshu k,b;
int lx,rx;
}f[N];
signed main(){
cin>>n>>sx;
for(int i=1;i<=n;i++){
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
L[i].x1 =x1,L[i].y1 =y1,L[i].x2 =x2,L[i].y2 =y2;
if(L[i].y1 <L[i].y2 ){
swap(L[i].x1 ,L[i].x2 ),swap(L[i].y1 ,L[i].y2 );
}
if((x1-x2)*(y1-y2)>0){
if(x1-x2>0) f[i].k.fenmu =x1-x2,f[i].k.fenzi =y1-y2;
if(x1-x2<0) f[i].k.fenmu =x2-x1,f[i].k.fenzi =y2-y1;
}
if((x1-x2)*(y1-y2)<0){
if(x1-x2>0)f[i].k.fenmu =x2-x1,f[i].k.fenzi =y2-y1;
if(x1-x2<0)f[i].k.fenmu =x1-x2,f[i].k.fenzi =y1-y2;
}
f[i].b=f[i].k ,f[i].b.fenzi *=(-x1);
f[i].b.fenzi +=(y1*f[i].b.fenmu );
int aa=__gcd(f[i].b.fenzi,f[i].b.fenmu );
f[i].b.fenmu /=aa,f[i].b.fenzi /=aa;
aa=__gcd(f[i].k.fenzi,f[i].k.fenmu );
f[i].k.fenmu /=aa,f[i].k.fenzi /=aa;
f[i].lx =min(x1,x2);
f[i].rx =max(x1,x2);
}
bool bb=1;
while(bb){
bb=0;
int I;fenshu yy;
yy.fenzi=-0x3f3f3f3f3f,yy.fenmu=1;
for(int i=1;i<=n;i++){
if(f[i].lx <=sx&&sx<=f[i].rx ){
fenshu y;
y.fenmu=max(f[i].b.fenmu ,f[i].k.fenmu ),y.fenzi=((max(f[i].b.fenmu ,f[i].k.fenmu )/f[i].b.fenmu )*f[i].b.fenzi )*(sx*max(f[i].b.fenmu ,f[i].k.fenmu ))+((max(f[i].b.fenmu ,f[i].k.fenmu )/f[i].k.fenmu )*f[i].k.fenzi );
int aa=__gcd(y.fenzi,y.fenmu );
y.fenmu /=aa,y.fenzi /=aa;
if(y.fenzi<=sy*y.fenmu){
bb=1;
if(y.fenzi*yy.fenmu >=yy.fenzi *y.fenmu) yy=y,I=i;
}
else continue;
}
else continue;
}
sx=L[I].x2 ,sy=L[I].y2 ;
}
cout<<sx;
return 0;
}