#include #include #include #include #include using namespace std; #define for if(0); else for const double PI=acos(-1.0); struct Point{ double x,y,vx,vy,t; Point(){} Point(double x,double y){ this->x=x; this->y=y; } Point(double x,double y,double d,double v){ this->x=x; this->y=y; this->vx=v*cos(d*PI/180.0); this->vy=v*sin(d*PI/180.0); this->t=0; } Point go(double t) const{ Point ret=*this; ret.x+=vx*t; ret.y+=vy*t; return ret; } }; int n; Point p[16]; double spd; double dp[16][1<<15]; bool vis[16][1<<15]; double dis(const Point &a,const Point &b){ double dx=a.x-b.x; double dy=a.y-b.y; return sqrt(dx*dx+dy*dy); } double cost(const Point &a,const Point &b){ Point ta=Point(b.x-a.x,b.y-a.y); Point v=Point(b.vx,b.vy); double V=dis(v,Point(0,0)); double D=dis(ta,Point(0,0)); double A=V*V-spd*spd; double C=D*D; double B=-2.0*(ta.x*v.x+ta.y*v.y); return (B-sqrt(B*B-4*A*C))/2.0/A; } int main() { setbuf(stdout,NULL); while(scanf("%d%lf",&n,&spd) &&(n!=0&&spd!=0)){ p[0]=Point(0,0,0,0); for(int i=1;i<=n;i++){ double x,y,d,v; scanf("%lf%lf%lf%lf",&x,&y,&d,&v); p[i]=Point(x,y,d,v); } memset(vis,0,sizeof(vis)); vis[0][0]=1; for(int stat=1;stat<1<