// 2008模擬地区予選 C : Dig or Climb #include #include #include #include #include using namespace std; int main(){ int n; int x[1000], y[1000]; double xd[3000], yd[3000], dist[3000]; int next[3000]; while(cin >> n, n){ int vw, vc; cin >> vw >> vc; for(int i=0;i> x[i] >> y[i]; xd[i] = x[i]; yd[i] = y[i]; next[i] = -1; } int size = n; for(int i=0;i= 0 && y[i] < y[i-1]){ for(int j=i-1;j-1>=0;j--){ if(y[j-1] == y[i]){ next[j-1] = i; break; } if(min(y[j], y[j-1]) <= y[i] && y[i] <= max(y[j], y[j-1])){ xd[size] = (y[i]-yd[j])*(xd[j-1]-xd[j])/(yd[j-1]-yd[j]) + xd[j]; yd[size] = y[i]; next[size] = i; size++; break; } } } } vector< pair > vp; for(int i=0;i